typedef enum item_quality {
	ITEM_QUALITY_NORMAL = 0,
	ITEM_QUALITY_MAGIC  = 1,
	ITEM_QUALITY_UNIQUE = 2,
} item_quality;

typedef enum unique_base_item {
	UITYPE_NONE        = 0x0,
	UITYPE_SHORTBOW    = 0x1,
	UITYPE_LONGBOW     = 0x2,
	UITYPE_HUNTBOW     = 0x3,
	UITYPE_COMPBOW     = 0x4,
	UITYPE_WARBOW      = 0x5,
	UITYPE_BATTLEBOW   = 0x6,
	UITYPE_DAGGER      = 0x7,
	UITYPE_FALCHION    = 0x8,
	UITYPE_CLAYMORE    = 0x9,
	UITYPE_BROADSWR    = 0xA,
	UITYPE_SABRE       = 0xB,
	UITYPE_SCIMITAR    = 0xC,
	UITYPE_LONGSWR     = 0xD,
	UITYPE_BASTARDSWR  = 0xE,
	UITYPE_TWOHANDSWR  = 0xF,
	UITYPE_GREATSWR    = 0x10,
	UITYPE_CLEAVER     = 0x11,
	UITYPE_LARGEAXE    = 0x12,
	UITYPE_BROADAXE    = 0x13,
	UITYPE_SMALLAXE    = 0x14,
	UITYPE_BATTLEAXE   = 0x15,
	UITYPE_GREATAXE    = 0x16,
	UITYPE_MACE        = 0x17,
	UITYPE_MORNSTAR    = 0x18,
	UITYPE_SPIKCLUB    = 0x19,
	UITYPE_MAUL        = 0x1A,
	UITYPE_WARHAMMER   = 0x1B,
	UITYPE_FLAIL       = 0x1C,
	UITYPE_LONGSTAFF   = 0x1D,
	UITYPE_SHORTSTAFF  = 0x1E,
	UITYPE_COMPSTAFF   = 0x1F,
	UITYPE_QUARSTAFF   = 0x20,
	UITYPE_WARSTAFF    = 0x21,
	UITYPE_SKULLCAP    = 0x22,
	UITYPE_HELM        = 0x23,
	UITYPE_GREATHELM   = 0x24,
	UITYPE_CROWN       = 0x25,
	UITYPE_38          = 0x26,
	UITYPE_RAGS        = 0x27,
	UITYPE_STUDARMOR   = 0x28,
	UITYPE_CLOAK       = 0x29,
	UITYPE_ROBE        = 0x2A,
	UITYPE_CHAINMAIL   = 0x2B,
	UITYPE_LEATHARMOR  = 0x2C,
	UITYPE_BREASTPLATE = 0x2D,
	UITYPE_CAPE        = 0x2E,
	UITYPE_PLATEMAIL   = 0x2F,
	UITYPE_FULLPLATE   = 0x30,
	UITYPE_BUCKLER     = 0x31,
	UITYPE_SMALLSHIELD = 0x32,
	UITYPE_LARGESHIELD = 0x33,
	UITYPE_KITESHIELD  = 0x34,
	UITYPE_GOTHSHIELD  = 0x35,
	UITYPE_RING        = 0x36,
	UITYPE_55          = 0x37,
	UITYPE_AMULET      = 0x38,
	UITYPE_SKCROWN     = 0x39,
	UITYPE_INFRARING   = 0x3A,
	UITYPE_OPTAMULET   = 0x3B,
	UITYPE_TRING       = 0x3C,
	UITYPE_HARCREST    = 0x3D,
	UITYPE_MAPOFDOOM   = 0x3E,
	UITYPE_ELIXIR      = 0x3F,
	UITYPE_ARMOFVAL    = 0x40,
	UITYPE_STEELVEIL   = 0x41,
	UITYPE_GRISWOLD    = 0x42,
	UITYPE_LGTFORGE    = 0x43,
	UITYPE_LAZSTAFF    = 0x44,
	UITYPE_INVALID     = -1,
} unique_base_item;

typedef enum item_effect_type {
	IPL_TOHIT            = 0x0,
	IPL_TOHIT_CURSE      = 0x1,
	IPL_DAMP             = 0x2,
	IPL_DAMP_CURSE       = 0x3,
	IPL_TOHIT_DAMP       = 0x4,
	IPL_TOHIT_DAMP_CURSE = 0x5,
	IPL_ACP              = 0x6,
	IPL_ACP_CURSE        = 0x7,
	IPL_FIRERES          = 0x8,
	IPL_LIGHTRES         = 0x9,
	IPL_MAGICRES         = 0xA,
	IPL_ALLRES           = 0xB,
	IPL_SPLLVLADD        = 0xE,
	IPL_CHARGES          = 0xF,
	IPL_FIREDAM          = 0x10,
	IPL_LIGHTDAM         = 0x11,
	IPL_STR              = 0x13,
	IPL_STR_CURSE        = 0x14,
	IPL_MAG              = 0x15,
	IPL_MAG_CURSE        = 0x16,
	IPL_DEX              = 0x17,
	IPL_DEX_CURSE        = 0x18,
	IPL_VIT              = 0x19,
	IPL_VIT_CURSE        = 0x1A,
	IPL_ATTRIBS          = 0x1B,
	IPL_ATTRIBS_CURSE    = 0x1C,
	IPL_GETHIT_CURSE     = 0x1D,
	IPL_GETHIT           = 0x1E,
	IPL_LIFE             = 0x1F,
	IPL_LIFE_CURSE       = 0x20,
	IPL_MANA             = 0x21,
	IPL_MANA_CURSE       = 0x22,
	IPL_DUR              = 0x23,
	IPL_DUR_CURSE        = 0x24,
	IPL_INDESTRUCTIBLE   = 0x25,
	IPL_LIGHT            = 0x26,
	IPL_LIGHT_CURSE      = 0x27,
	IPL_MULT_ARROWS      = 0x29, /* only used in hellfire */
	IPL_FIRE_ARROWS      = 0x2A,
	IPL_LIGHT_ARROWS     = 0x2B,
	IPL_INVCURS          = 0x2C,
	IPL_THORNS           = 0x2D,
	IPL_NOMANA           = 0x2E,
	IPL_NOHEALPLR        = 0x2F,
	IPL_ABSHALFTRAP      = 0x34,
	IPL_KNOCKBACK        = 0x35,
	IPL_NOHEALMON        = 0x36,
	IPL_STEALMANA        = 0x37,
	IPL_STEALLIFE        = 0x38,
	IPL_TARGAC           = 0x39,
	IPL_FASTATTACK       = 0x3A,
	IPL_FASTRECOVER      = 0x3B,
	IPL_FASTBLOCK        = 0x3C,
	IPL_DAMMOD           = 0x3D,
	IPL_RNDARROWVEL      = 0x3E,
	IPL_SETDAM           = 0x3F,
	IPL_SETDUR           = 0x40,
	IPL_NOMINSTR         = 0x41,
	IPL_SPELL            = 0x42,
	IPL_FASTSWING        = 0x43,
	IPL_ONEHAND          = 0x44,
	IPL_3XDAMVDEM        = 0x45,
	IPL_ALLRESZERO       = 0x46,
	IPL_DRAINLIFE        = 0x48,
	IPL_RNDSTEALLIFE     = 0x49,
	IPL_INFRAVISION      = 0x4A,
	IPL_SETAC            = 0x4B,
	IPL_ADDACLIFE        = 0x4C,
	IPL_ADDMANAAC        = 0x4D,
	IPL_FIRERESCLVL      = 0x4E,
	IPL_AC_CURSE         = 0x4F,
	IPL_INVALID          = -1,
} item_effect_type;

typedef enum affix_item_type {
	PLT_MISC  = 0x1,
	PLT_BOW   = 0x10,
	PLT_STAFF = 0x100,
	PLT_WEAP  = 0x1000,
	PLT_SHLD  = 0x10000,
	PLT_ARMO  = 0x100000,
} affix_item_type;

/// Item graphic IDs; frame_num-11 of objcurs.cel.
typedef enum item_cursor_graphic {
	ICURS_POTION_OF_FULL_MANA         = 0,
	ICURS_SCROLL_OF                   = 1,
	ICURS_GOLD_SMALL                  = 4,
	ICURS_GOLD_MEDIUM                 = 5,
	ICURS_GOLD_LARGE                  = 6,
	ICURS_RING_OF_TRUTH               = 10,
	ICURS_RING                        = 12,
	ICURS_SPECTRAL_ELIXIR             = 15,
	ICURS_GOLDEN_ELIXIR               = 17,
	ICURS_EMPYREAN_BAND               = 18,
	ICURS_EAR_SORCEROR                = 19,
	ICURS_EAR_WARRIOR                 = 20,
	ICURS_EAR_ROGUE                   = 21,
	ICURS_BLOOD_STONE                 = 25,
	ICURS_ELIXIR_OF_VITALITY          = 31,
	ICURS_POTION_OF_HEALING           = 32,
	ICURS_POTION_OF_FULL_REJUVENATION = 33,
	ICURS_ELIXIR_OF_MAGIC             = 34,
	ICURS_POTION_OF_FULL_HEALING      = 35,
	ICURS_ELIXIR_OF_DEXTERITY         = 36,
	ICURS_POTION_OF_REJUVENATION      = 37,
	ICURS_ELIXIR_OF_STRENGTH          = 38,
	ICURS_POTION_OF_MANA              = 39,
	ICURS_BRAIN                       = 40,
	ICURS_OPTIC_AMULET                = 44,
	ICURS_AMULET                      = 45,
	ICURS_DAGGER                      = 51,
	ICURS_BLADE                       = 56,
	ICURS_BASTARD_SWORD               = 57,
	ICURS_MACE                        = 59,
	ICURS_LONG_SWORD                  = 60,
	ICURS_BROAD_SWORD                 = 61,
	ICURS_FALCHION                    = 62,
	ICURS_MORNING_STAR                = 63,
	ICURS_SHORT_SWORD                 = 64,
	ICURS_CLAYMORE                    = 65,
	ICURS_CLUB                        = 66,
	ICURS_SABRE                       = 67,
	ICURS_SPIKED_CLUB                 = 70,
	ICURS_SCIMITAR                    = 72,
	ICURS_FULL_HELM                   = 75,
	ICURS_MAGIC_ROCK                  = 76,
	ICURS_THE_UNDEAD_CROWN            = 78,
	ICURS_HELM                        = 82,
	ICURS_BUCKLER                     = 83,
	ICURS_VIEL_OF_STEEL               = 85,
	ICURS_BOOK_GREY                   = 86,
	ICURS_BOOK_RED                    = 87,
	ICURS_BOOK_BLUE                   = 88,
	ICURS_BLACK_MUSHROOM              = 89,
	ICURS_SKULL_CAP                   = 90,
	ICURS_CAP                         = 91,
	ICURS_HARLEQUIN_CREST             = 93,
	ICURS_CROWN                       = 95,
	ICURS_MAP_OF_THE_STARS            = 96,
	ICURS_FUNGAL_TOME                 = 97,
	ICURS_GREAT_HELM                  = 98,
	ICURS_BATTLE_AXE                  = 101,
	ICURS_HUNTERS_BOW                 = 102,
	ICURS_FIELD_PLATE                 = 103,
	ICURS_SMALL_SHIELD                = 105,
	ICURS_CLEAVER                     = 106,
	ICURS_STUDDED_LEATHER_ARMOR       = 107,
	ICURS_SHORT_STAFF                 = 109,
	ICURS_TWO_HANDED_SWORD            = 110,
	ICURS_CHAIN_MAIL                  = 111,
	ICURS_SMALL_AXE                   = 112,
	ICURS_KITE_SHIELD                 = 113,
	ICURS_SCALE_MAIL                  = 114,
	ICURS_SHORT_BOW                   = 118,
	ICURS_LONG_WAR_BOW                = 119,
	ICURS_WAR_HAMMER                  = 121,
	ICURS_MAUL                        = 122,
	ICURS_LONG_STAFF                  = 123,
	ICURS_WAR_STAFF                   = 124,
	ICURS_TAVERN_SIGN                 = 126,
	ICURS_HARD_LEATHER_ARMOR          = 127,
	ICURS_RAGS                        = 128,
	ICURS_QUILTED_ARMOR               = 129,
	ICURS_FLAIL                       = 131,
	ICURS_TOWER_SHIELD                = 132,
	ICURS_COMPOSITE_BOW               = 133,
	ICURS_GREAT_SWORD                 = 134,
	ICURS_LEATHER_ARMOR               = 135,
	ICURS_SPLINT_MAIL                 = 136,
	ICURS_ROBE                        = 137,
	ICURS_ANVIL_OF_FURY               = 140,
	ICURS_BROAD_AXE                   = 141,
	ICURS_LARGE_AXE                   = 142,
	ICURS_GREAT_AXE                   = 143,
	ICURS_AXE                         = 144,
	ICURS_LARGE_SHIELD                = 147,
	ICURS_GOTHIC_SHIELD               = 148,
	ICURS_CLOAK                       = 149,
	ICURS_CAPE                        = 150,
	ICURS_FULL_PLATE_MAIL             = 151,
	ICURS_GOTHIC_PLATE                = 152,
	ICURS_BREAST_PLATE                = 153,
	ICURS_RING_MAIL                   = 154,
	ICURS_STAFF_OF_LAZARUS            = 155,
	ICURS_ARKAINES_VALOR              = 157,
	ICURS_SHORT_WAR_BOW               = 165,
	ICURS_COMPOSITE_STAFF             = 166,
	ICURS_SHORT_BATTLE_BOW            = 167,
	ICURS_GOLD                        = 168,
} item_cursor_graphic;

typedef enum _sfx_id {
	PS_WALK1      = 0x0,
	PS_WALK2      = 0x1,
	PS_WALK3      = 0x2,
	PS_WALK4      = 0x3,
	PS_BFIRE      = 0x4,
	PS_FMAG       = 0x5,
	PS_TMAG       = 0x6,
	PS_LGHIT      = 0x7,
	PS_LGHIT1     = 0x8,
	PS_SWING      = 0x9,
	PS_SWING2     = 0xA,
	PS_DEAD       = 0xB,
	IS_QUESTDN    = 0xC,
	IS_ARMRFKD    = 0xD,
	IS_BARLFIRE   = 0xE,
	IS_BARREL     = 0xF,
	IS_BHIT       = 0x10,
	IS_BHIT1      = 0x11,
	IS_CHEST      = 0x12,
	IS_DOORCLOS   = 0x13,
	IS_DOOROPEN   = 0x14,
	IS_FANVL      = 0x15,
	IS_FAXE       = 0x16,
	IS_FBLST      = 0x17,
	IS_FBODY      = 0x18,
	IS_FBOOK      = 0x19,
	IS_FBOW       = 0x1A,
	IS_FCAP       = 0x1B,
	IS_FHARM      = 0x1C,
	IS_FLARM      = 0x1D,
	IS_FMAG       = 0x1E,
	IS_FMAG1      = 0x1F,
	IS_FMUSH      = 0x20,
	IS_FPOT       = 0x21,
	IS_FRING      = 0x22,
	IS_FROCK      = 0x23,
	IS_FSCRL      = 0x24,
	IS_FSHLD      = 0x25,
	IS_FSIGN      = 0x26,
	IS_FSTAF      = 0x27,
	IS_FSWOR      = 0x28,
	IS_GOLD       = 0x29,
	IS_HLMTFKD    = 0x2A,
	IS_IANVL      = 0x2B,
	IS_IAXE       = 0x2C,
	IS_IBLST      = 0x2D,
	IS_IBODY      = 0x2E,
	IS_IBOOK      = 0x2F,
	IS_IBOW       = 0x30,
	IS_ICAP       = 0x31,
	IS_IGRAB      = 0x32,
	IS_IHARM      = 0x33,
	IS_ILARM      = 0x34,
	IS_IMUSH      = 0x35,
	IS_IPOT       = 0x36,
	IS_IRING      = 0x37,
	IS_IROCK      = 0x38,
	IS_ISCROL     = 0x39,
	IS_ISHIEL     = 0x3A,
	IS_ISIGN      = 0x3B,
	IS_ISTAF      = 0x3C,
	IS_ISWORD     = 0x3D,
	IS_LEVER      = 0x3E,
	IS_MAGIC      = 0x3F,
	IS_MAGIC1     = 0x40,
	IS_RBOOK      = 0x41,
	IS_SARC       = 0x42,
	IS_SHLDFKD    = 0x43,
	IS_SWRDFKD    = 0x44,
	IS_TITLEMOV   = 0x45,
	IS_TITLSLCT   = 0x46,
	SFX_SILENCE   = 0x47,
	IS_TRAP       = 0x48,
	IS_CAST1      = 0x49,
	IS_CAST10     = 0x4A,
	IS_CAST12     = 0x4B,
	IS_CAST2      = 0x4C,
	IS_CAST3      = 0x4D,
	IS_CAST4      = 0x4E,
	IS_CAST5      = 0x4F,
	IS_CAST6      = 0x50,
	IS_CAST7      = 0x51,
	IS_CAST8      = 0x52,
	IS_CAST9      = 0x53,
	LS_HEALING    = 0x54,
	IS_REPAIR     = 0x55,
	LS_ACID       = 0x56,
	LS_ACIDS      = 0x57,
	LS_APOC       = 0x58,
	LS_ARROWALL   = 0x59,
	LS_BLODBOIL   = 0x5A,
	LS_BLODSTAR   = 0x5B,
	LS_BLSIMPT    = 0x5C,
	LS_BONESP     = 0x5D,
	LS_BSIMPCT    = 0x5E,
	LS_CALDRON    = 0x5F,
	LS_CBOLT      = 0x60,
	LS_CHLTNING   = 0x61,
	LS_DSERP      = 0x62,
	LS_ELECIMP1   = 0x63,
	LS_ELEMENTL   = 0x64,
	LS_ETHEREAL   = 0x65,
	LS_FBALL      = 0x66,
	LS_FBOLT1     = 0x67,
	LS_FBOLT2     = 0x68,
	LS_FIRIMP1    = 0x69,
	LS_FIRIMP2    = 0x6A,
	LS_FLAMWAVE   = 0x6B,
	LS_FLASH      = 0x6C,
	LS_FOUNTAIN   = 0x6D,
	LS_GOLUM      = 0x6E,
	LS_GOLUMDED   = 0x6F,
	LS_GSHRINE    = 0x70,
	LS_GUARD      = 0x71,
	LS_GUARDLAN   = 0x72,
	LS_HOLYBOLT   = 0x73,
	LS_HYPER      = 0x74,
	LS_INFRAVIS   = 0x75,
	LS_INVISIBL   = 0x76,
	LS_INVPOT     = 0x77,
	LS_LNING1     = 0x78,
	LS_LTNING     = 0x79,
	LS_MSHIELD    = 0x7A,
	LS_NOVA       = 0x7B,
	LS_PORTAL     = 0x7C,
	LS_PUDDLE     = 0x7D,
	LS_RESUR      = 0x7E,
	LS_SCURSE     = 0x7F,
	LS_SCURIMP    = 0x80,
	LS_SENTINEL   = 0x81,
	LS_SHATTER    = 0x82,
	LS_SOULFIRE   = 0x83,
	LS_SPOUTLOP   = 0x84,
	LS_SPOUTSTR   = 0x85,
	LS_STORM      = 0x86,
	LS_TRAPDIS    = 0x87,
	LS_TELEPORT   = 0x88,
	LS_VTHEFT     = 0x89,
	LS_WALLLOOP   = 0x8A,
	LS_WALLSTRT   = 0x8B,
	TSFX_BMAID1   = 0x8C,
	TSFX_BMAID2   = 0x8D,
	TSFX_BMAID3   = 0x8E,
	TSFX_BMAID4   = 0x8F,
	TSFX_BMAID5   = 0x90,
	TSFX_BMAID6   = 0x91,
	TSFX_BMAID7   = 0x92,
	TSFX_BMAID8   = 0x93,
	TSFX_BMAID9   = 0x94,
	TSFX_BMAID10  = 0x95,
	TSFX_BMAID11  = 0x96,
	TSFX_BMAID12  = 0x97,
	TSFX_BMAID13  = 0x98,
	TSFX_BMAID14  = 0x99,
	TSFX_BMAID15  = 0x9A,
	TSFX_BMAID16  = 0x9B,
	TSFX_BMAID17  = 0x9C,
	TSFX_BMAID18  = 0x9D,
	TSFX_BMAID19  = 0x9E,
	TSFX_BMAID20  = 0x9F,
	TSFX_BMAID21  = 0xA0,
	TSFX_BMAID22  = 0xA1,
	TSFX_BMAID23  = 0xA2,
	TSFX_BMAID24  = 0xA3,
	TSFX_BMAID25  = 0xA4,
	TSFX_BMAID26  = 0xA5,
	TSFX_BMAID27  = 0xA6,
	TSFX_BMAID28  = 0xA7,
	TSFX_BMAID29  = 0xA8,
	TSFX_BMAID30  = 0xA9,
	TSFX_BMAID31  = 0xAA,
	TSFX_BMAID32  = 0xAB,
	TSFX_BMAID33  = 0xAC,
	TSFX_BMAID34  = 0xAD,
	TSFX_BMAID35  = 0xAE,
	TSFX_BMAID36  = 0xAF,
	TSFX_BMAID37  = 0xB0,
	TSFX_BMAID38  = 0xB1,
	TSFX_BMAID39  = 0xB2,
	TSFX_BMAID40  = 0xB3,
	TSFX_SMITH1   = 0xB4,
	TSFX_SMITH2   = 0xB5,
	TSFX_SMITH3   = 0xB6,
	TSFX_SMITH4   = 0xB7,
	TSFX_SMITH5   = 0xB8,
	TSFX_SMITH6   = 0xB9,
	TSFX_SMITH7   = 0xBA,
	TSFX_SMITH8   = 0xBB,
	TSFX_SMITH9   = 0xBC,
	TSFX_SMITH10  = 0xBD,
	TSFX_SMITH11  = 0xBE,
	TSFX_SMITH12  = 0xBF,
	TSFX_SMITH13  = 0xC0,
	TSFX_SMITH14  = 0xC1,
	TSFX_SMITH15  = 0xC2,
	TSFX_SMITH16  = 0xC3,
	TSFX_SMITH17  = 0xC4,
	TSFX_SMITH18  = 0xC5,
	TSFX_SMITH19  = 0xC6,
	TSFX_SMITH20  = 0xC7,
	TSFX_SMITH21  = 0xC8,
	TSFX_SMITH22  = 0xC9,
	TSFX_SMITH23  = 0xCA,
	TSFX_SMITH24  = 0xCB,
	TSFX_SMITH25  = 0xCC,
	TSFX_SMITH26  = 0xCD,
	TSFX_SMITH27  = 0xCE,
	TSFX_SMITH28  = 0xCF,
	TSFX_SMITH29  = 0xD0,
	TSFX_SMITH30  = 0xD1,
	TSFX_SMITH31  = 0xD2,
	TSFX_SMITH32  = 0xD3,
	TSFX_SMITH33  = 0xD4,
	TSFX_SMITH34  = 0xD5,
	TSFX_SMITH35  = 0xD6,
	TSFX_SMITH36  = 0xD7,
	TSFX_SMITH37  = 0xD8,
	TSFX_SMITH38  = 0xD9,
	TSFX_SMITH39  = 0xDA,
	TSFX_SMITH40  = 0xDB,
	TSFX_SMITH41  = 0xDC,
	TSFX_SMITH42  = 0xDD,
	TSFX_SMITH43  = 0xDE,
	TSFX_SMITH44  = 0xDF,
	TSFX_SMITH45  = 0xE0,
	TSFX_SMITH46  = 0xE1,
	TSFX_SMITH47  = 0xE2,
	TSFX_SMITH48  = 0xE3,
	TSFX_SMITH49  = 0xE4,
	TSFX_SMITH50  = 0xE5,
	TSFX_SMITH51  = 0xE6,
	TSFX_SMITH52  = 0xE7,
	TSFX_SMITH53  = 0xE8,
	TSFX_SMITH54  = 0xE9,
	TSFX_SMITH55  = 0xEA,
	TSFX_SMITH56  = 0xEB,
	TSFX_COW1     = 0xEC,
	TSFX_COW2     = 0xED,
	TSFX_DEADGUY  = 0xEE,
	TSFX_DRUNK1   = 0xEF,
	TSFX_DRUNK2   = 0xF0,
	TSFX_DRUNK3   = 0xF1,
	TSFX_DRUNK4   = 0xF2,
	TSFX_DRUNK5   = 0xF3,
	TSFX_DRUNK6   = 0xF4,
	TSFX_DRUNK7   = 0xF5,
	TSFX_DRUNK8   = 0xF6,
	TSFX_DRUNK9   = 0xF7,
	TSFX_DRUNK10  = 0xF8,
	TSFX_DRUNK11  = 0xF9,
	TSFX_DRUNK12  = 0xFA,
	TSFX_DRUNK13  = 0xFB,
	TSFX_DRUNK14  = 0xFC,
	TSFX_DRUNK15  = 0xFD,
	TSFX_DRUNK16  = 0xFE,
	TSFX_DRUNK17  = 0xFF,
	TSFX_DRUNK18  = 0x100,
	TSFX_DRUNK19  = 0x101,
	TSFX_DRUNK20  = 0x102,
	TSFX_DRUNK21  = 0x103,
	TSFX_DRUNK22  = 0x104,
	TSFX_DRUNK23  = 0x105,
	TSFX_DRUNK24  = 0x106,
	TSFX_DRUNK25  = 0x107,
	TSFX_DRUNK26  = 0x108,
	TSFX_DRUNK27  = 0x109,
	TSFX_DRUNK28  = 0x10A,
	TSFX_DRUNK29  = 0x10B,
	TSFX_DRUNK30  = 0x10C,
	TSFX_DRUNK31  = 0x10D,
	TSFX_DRUNK32  = 0x10E,
	TSFX_DRUNK33  = 0x10F,
	TSFX_DRUNK34  = 0x110,
	TSFX_DRUNK35  = 0x111,
	TSFX_HEALER1  = 0x112,
	TSFX_HEALER2  = 0x113,
	TSFX_HEALER3  = 0x114,
	TSFX_HEALER4  = 0x115,
	TSFX_HEALER5  = 0x116,
	TSFX_HEALER6  = 0x117,
	TSFX_HEALER7  = 0x118,
	TSFX_HEALER8  = 0x119,
	TSFX_HEALER9  = 0x11A,
	TSFX_HEALER10 = 0x11B,
	TSFX_HEALER11 = 0x11C,
	TSFX_HEALER12 = 0x11D,
	TSFX_HEALER13 = 0x11E,
	TSFX_HEALER14 = 0x11F,
	TSFX_HEALER15 = 0x120,
	TSFX_HEALER16 = 0x121,
	TSFX_HEALER17 = 0x122,
	TSFX_HEALER18 = 0x123,
	TSFX_HEALER19 = 0x124,
	TSFX_HEALER20 = 0x125,
	TSFX_HEALER21 = 0x126,
	TSFX_HEALER22 = 0x127,
	TSFX_HEALER23 = 0x128,
	TSFX_HEALER24 = 0x129,
	TSFX_HEALER25 = 0x12A,
	TSFX_HEALER26 = 0x12B,
	TSFX_HEALER27 = 0x12C,
	TSFX_HEALER28 = 0x12D,
	TSFX_HEALER29 = 0x12E,
	TSFX_HEALER30 = 0x12F,
	TSFX_HEALER31 = 0x130,
	TSFX_HEALER32 = 0x131,
	TSFX_HEALER33 = 0x132,
	TSFX_HEALER34 = 0x133,
	TSFX_HEALER35 = 0x134,
	TSFX_HEALER36 = 0x135,
	TSFX_HEALER37 = 0x136,
	TSFX_HEALER38 = 0x137,
	TSFX_HEALER39 = 0x138,
	TSFX_HEALER40 = 0x139,
	TSFX_HEALER41 = 0x13A,
	TSFX_HEALER42 = 0x13B,
	TSFX_HEALER43 = 0x13C,
	TSFX_HEALER44 = 0x13D,
	TSFX_HEALER45 = 0x13E,
	TSFX_HEALER46 = 0x13F,
	TSFX_HEALER47 = 0x140,
	TSFX_PEGBOY1  = 0x141,
	TSFX_PEGBOY2  = 0x142,
	TSFX_PEGBOY3  = 0x143,
	TSFX_PEGBOY4  = 0x144,
	TSFX_PEGBOY5  = 0x145,
	TSFX_PEGBOY6  = 0x146,
	TSFX_PEGBOY7  = 0x147,
	TSFX_PEGBOY8  = 0x148,
	TSFX_PEGBOY9  = 0x149,
	TSFX_PEGBOY10 = 0x14A,
	TSFX_PEGBOY11 = 0x14B,
	TSFX_PEGBOY12 = 0x14C,
	TSFX_PEGBOY13 = 0x14D,
	TSFX_PEGBOY14 = 0x14E,
	TSFX_PEGBOY15 = 0x14F,
	TSFX_PEGBOY16 = 0x150,
	TSFX_PEGBOY17 = 0x151,
	TSFX_PEGBOY18 = 0x152,
	TSFX_PEGBOY19 = 0x153,
	TSFX_PEGBOY20 = 0x154,
	TSFX_PEGBOY21 = 0x155,
	TSFX_PEGBOY22 = 0x156,
	TSFX_PEGBOY23 = 0x157,
	TSFX_PEGBOY24 = 0x158,
	TSFX_PEGBOY25 = 0x159,
	TSFX_PEGBOY26 = 0x15A,
	TSFX_PEGBOY27 = 0x15B,
	TSFX_PEGBOY28 = 0x15C,
	TSFX_PEGBOY29 = 0x15D,
	TSFX_PEGBOY30 = 0x15E,
	TSFX_PEGBOY31 = 0x15F,
	TSFX_PEGBOY32 = 0x160,
	TSFX_PEGBOY33 = 0x161,
	TSFX_PEGBOY34 = 0x162,
	TSFX_PEGBOY35 = 0x163,
	TSFX_PEGBOY36 = 0x164,
	TSFX_PEGBOY37 = 0x165,
	TSFX_PEGBOY38 = 0x166,
	TSFX_PEGBOY39 = 0x167,
	TSFX_PEGBOY40 = 0x168,
	TSFX_PEGBOY41 = 0x169,
	TSFX_PEGBOY42 = 0x16A,
	TSFX_PEGBOY43 = 0x16B,
	TSFX_PRIEST0  = 0x16C,
	TSFX_PRIEST1  = 0x16D,
	TSFX_PRIEST2  = 0x16E,
	TSFX_PRIEST3  = 0x16F,
	TSFX_PRIEST4  = 0x170,
	TSFX_PRIEST5  = 0x171,
	TSFX_PRIEST6  = 0x172,
	TSFX_PRIEST7  = 0x173,
	TSFX_STORY0   = 0x174,
	TSFX_STORY1   = 0x175,
	TSFX_STORY2   = 0x176,
	TSFX_STORY3   = 0x177,
	TSFX_STORY4   = 0x178,
	TSFX_STORY5   = 0x179,
	TSFX_STORY6   = 0x17A,
	TSFX_STORY7   = 0x17B,
	TSFX_STORY8   = 0x17C,
	TSFX_STORY9   = 0x17D,
	TSFX_STORY10  = 0x17E,
	TSFX_STORY11  = 0x17F,
	TSFX_STORY12  = 0x180,
	TSFX_STORY13  = 0x181,
	TSFX_STORY14  = 0x182,
	TSFX_STORY15  = 0x183,
	TSFX_STORY16  = 0x184,
	TSFX_STORY17  = 0x185,
	TSFX_STORY18  = 0x186,
	TSFX_STORY19  = 0x187,
	TSFX_STORY20  = 0x188,
	TSFX_STORY21  = 0x189,
	TSFX_STORY22  = 0x18A,
	TSFX_STORY23  = 0x18B,
	TSFX_STORY24  = 0x18C,
	TSFX_STORY25  = 0x18D,
	TSFX_STORY26  = 0x18E,
	TSFX_STORY27  = 0x18F,
	TSFX_STORY28  = 0x190,
	TSFX_STORY29  = 0x191,
	TSFX_STORY30  = 0x192,
	TSFX_STORY31  = 0x193,
	TSFX_STORY32  = 0x194,
	TSFX_STORY33  = 0x195,
	TSFX_STORY34  = 0x196,
	TSFX_STORY35  = 0x197,
	TSFX_STORY36  = 0x198,
	TSFX_STORY37  = 0x199,
	TSFX_STORY38  = 0x19A,
	TSFX_TAVERN0  = 0x19B,
	TSFX_TAVERN1  = 0x19C,
	TSFX_TAVERN2  = 0x19D,
	TSFX_TAVERN3  = 0x19E,
	TSFX_TAVERN4  = 0x19F,
	TSFX_TAVERN5  = 0x1A0,
	TSFX_TAVERN6  = 0x1A1,
	TSFX_TAVERN7  = 0x1A2,
	TSFX_TAVERN8  = 0x1A3,
	TSFX_TAVERN9  = 0x1A4,
	TSFX_TAVERN10 = 0x1A5,
	TSFX_TAVERN11 = 0x1A6,
	TSFX_TAVERN12 = 0x1A7,
	TSFX_TAVERN13 = 0x1A8,
	TSFX_TAVERN14 = 0x1A9,
	TSFX_TAVERN15 = 0x1AA,
	TSFX_TAVERN16 = 0x1AB,
	TSFX_TAVERN17 = 0x1AC,
	TSFX_TAVERN18 = 0x1AD,
	TSFX_TAVERN19 = 0x1AE,
	TSFX_TAVERN20 = 0x1AF,
	TSFX_TAVERN21 = 0x1B0,
	TSFX_TAVERN22 = 0x1B1,
	TSFX_TAVERN23 = 0x1B2,
	TSFX_TAVERN24 = 0x1B3,
	TSFX_TAVERN25 = 0x1B4,
	TSFX_TAVERN26 = 0x1B5,
	TSFX_TAVERN27 = 0x1B6,
	TSFX_TAVERN28 = 0x1B7,
	TSFX_TAVERN29 = 0x1B8,
	TSFX_TAVERN30 = 0x1B9,
	TSFX_TAVERN31 = 0x1BA,
	TSFX_TAVERN32 = 0x1BB,
	TSFX_TAVERN33 = 0x1BC,
	TSFX_TAVERN34 = 0x1BD,
	TSFX_TAVERN35 = 0x1BE,
	TSFX_TAVERN36 = 0x1BF,
	TSFX_TAVERN37 = 0x1C0,
	TSFX_TAVERN38 = 0x1C1,
	TSFX_TAVERN39 = 0x1C2,
	TSFX_TAVERN40 = 0x1C3,
	TSFX_TAVERN41 = 0x1C4,
	TSFX_TAVERN42 = 0x1C5,
	TSFX_TAVERN43 = 0x1C6,
	TSFX_TAVERN44 = 0x1C7,
	TSFX_TAVERN45 = 0x1C8,
	TSFX_WITCH1   = 0x1C9,
	TSFX_WITCH2   = 0x1CA,
	TSFX_WITCH3   = 0x1CB,
	TSFX_WITCH4   = 0x1CC,
	TSFX_WITCH5   = 0x1CD,
	TSFX_WITCH6   = 0x1CE,
	TSFX_WITCH7   = 0x1CF,
	TSFX_WITCH8   = 0x1D0,
	TSFX_WITCH9   = 0x1D1,
	TSFX_WITCH10  = 0x1D2,
	TSFX_WITCH11  = 0x1D3,
	TSFX_WITCH12  = 0x1D4,
	TSFX_WITCH13  = 0x1D5,
	TSFX_WITCH14  = 0x1D6,
	TSFX_WITCH15  = 0x1D7,
	TSFX_WITCH16  = 0x1D8,
	TSFX_WITCH17  = 0x1D9,
	TSFX_WITCH18  = 0x1DA,
	TSFX_WITCH19  = 0x1DB,
	TSFX_WITCH20  = 0x1DC,
	TSFX_WITCH21  = 0x1DD,
	TSFX_WITCH22  = 0x1DE,
	TSFX_WITCH23  = 0x1DF,
	TSFX_WITCH24  = 0x1E0,
	TSFX_WITCH25  = 0x1E1,
	TSFX_WITCH26  = 0x1E2,
	TSFX_WITCH27  = 0x1E3,
	TSFX_WITCH28  = 0x1E4,
	TSFX_WITCH29  = 0x1E5,
	TSFX_WITCH30  = 0x1E6,
	TSFX_WITCH31  = 0x1E7,
	TSFX_WITCH32  = 0x1E8,
	TSFX_WITCH33  = 0x1E9,
	TSFX_WITCH34  = 0x1EA,
	TSFX_WITCH35  = 0x1EB,
	TSFX_WITCH36  = 0x1EC,
	TSFX_WITCH37  = 0x1ED,
	TSFX_WITCH38  = 0x1EE,
	TSFX_WITCH39  = 0x1EF,
	TSFX_WITCH40  = 0x1F0,
	TSFX_WITCH41  = 0x1F1,
	TSFX_WITCH42  = 0x1F2,
	TSFX_WITCH43  = 0x1F3,
	TSFX_WITCH44  = 0x1F4,
	TSFX_WITCH45  = 0x1F5,
	TSFX_WITCH46  = 0x1F6,
	TSFX_WITCH47  = 0x1F7,
	TSFX_WITCH48  = 0x1F8,
	TSFX_WITCH49  = 0x1F9,
	TSFX_WITCH50  = 0x1FA,
	TSFX_WOUND    = 0x1FB,
	PS_MAGE1      = 0x1FC,
	PS_MAGE2      = 0x1FD,
	PS_MAGE3      = 0x1FE,
	PS_MAGE4      = 0x1FF,
	PS_MAGE5      = 0x200,
	PS_MAGE6      = 0x201,
	PS_MAGE7      = 0x202,
	PS_MAGE8      = 0x203,
	PS_MAGE9      = 0x204,
	PS_MAGE10     = 0x205,
	PS_MAGE11     = 0x206,
	PS_MAGE12     = 0x207,
	PS_MAGE13     = 0x208,
	PS_MAGE14     = 0x209,
	PS_MAGE15     = 0x20A,
	PS_MAGE16     = 0x20B,
	PS_MAGE17     = 0x20C,
	PS_MAGE18     = 0x20D,
	PS_MAGE19     = 0x20E,
	PS_MAGE20     = 0x20F,
	PS_MAGE21     = 0x210,
	PS_MAGE22     = 0x211,
	PS_MAGE23     = 0x212,
	PS_MAGE24     = 0x213,
	PS_MAGE25     = 0x214,
	PS_MAGE26     = 0x215,
	PS_MAGE27     = 0x216,
	PS_MAGE28     = 0x217,
	PS_MAGE29     = 0x218,
	PS_MAGE30     = 0x219,
	PS_MAGE31     = 0x21A,
	PS_MAGE32     = 0x21B,
	PS_MAGE33     = 0x21C,
	PS_MAGE34     = 0x21D,
	PS_MAGE35     = 0x21E,
	PS_MAGE36     = 0x21F,
	PS_MAGE37     = 0x220,
	PS_MAGE38     = 0x221,
	PS_MAGE39     = 0x222,
	PS_MAGE40     = 0x223,
	PS_MAGE41     = 0x224,
	PS_MAGE42     = 0x225,
	PS_MAGE43     = 0x226,
	PS_MAGE44     = 0x227,
	PS_MAGE45     = 0x228,
	PS_MAGE46     = 0x229,
	PS_MAGE47     = 0x22A,
	PS_MAGE48     = 0x22B,
	PS_MAGE49     = 0x22C,
	PS_MAGE50     = 0x22D,
	PS_MAGE51     = 0x22E,
	PS_MAGE52     = 0x22F,
	PS_MAGE53     = 0x230,
	PS_MAGE54     = 0x231,
	PS_MAGE55     = 0x232,
	PS_MAGE56     = 0x233,
	PS_MAGE57     = 0x234,
	PS_MAGE58     = 0x235,
	PS_MAGE59     = 0x236,
	PS_MAGE60     = 0x237,
	PS_MAGE61     = 0x238,
	PS_MAGE62     = 0x239,
	PS_MAGE63     = 0x23A,
	PS_MAGE64     = 0x23B,
	PS_MAGE65     = 0x23C,
	PS_MAGE66     = 0x23D,
	PS_MAGE67     = 0x23E,
	PS_MAGE68     = 0x23F,
	PS_MAGE69     = 0x240,
	PS_MAGE69B    = 0x241,
	PS_MAGE70     = 0x242,
	PS_MAGE71     = 0x243,
	PS_MAGE72     = 0x244,
	PS_MAGE73     = 0x245,
	PS_MAGE74     = 0x246,
	PS_MAGE75     = 0x247,
	PS_MAGE76     = 0x248,
	PS_MAGE77     = 0x249,
	PS_MAGE78     = 0x24A,
	PS_MAGE79     = 0x24B,
	PS_MAGE80     = 0x24C,
	PS_MAGE81     = 0x24D,
	PS_MAGE82     = 0x24E,
	PS_MAGE83     = 0x24F,
	PS_MAGE84     = 0x250,
	PS_MAGE85     = 0x251,
	PS_MAGE86     = 0x252,
	PS_MAGE87     = 0x253,
	PS_MAGE88     = 0x254,
	PS_MAGE89     = 0x255,
	PS_MAGE90     = 0x256,
	PS_MAGE91     = 0x257,
	PS_MAGE92     = 0x258,
	PS_MAGE93     = 0x259,
	PS_MAGE94     = 0x25A,
	PS_MAGE95     = 0x25B,
	PS_MAGE96     = 0x25C,
	PS_MAGE97     = 0x25D,
	PS_MAGE98     = 0x25E,
	PS_MAGE99     = 0x25F,
	PS_MAGE100    = 0x260,
	PS_MAGE101    = 0x261,
	PS_MAGE102    = 0x262,
	PS_ROGUE1     = 0x263,
	PS_ROGUE2     = 0x264,
	PS_ROGUE3     = 0x265,
	PS_ROGUE4     = 0x266,
	PS_ROGUE5     = 0x267,
	PS_ROGUE6     = 0x268,
	PS_ROGUE7     = 0x269,
	PS_ROGUE8     = 0x26A,
	PS_ROGUE9     = 0x26B,
	PS_ROGUE10    = 0x26C,
	PS_ROGUE11    = 0x26D,
	PS_ROGUE12    = 0x26E,
	PS_ROGUE13    = 0x26F,
	PS_ROGUE14    = 0x270,
	PS_ROGUE15    = 0x271,
	PS_ROGUE16    = 0x272,
	PS_ROGUE17    = 0x273,
	PS_ROGUE18    = 0x274,
	PS_ROGUE19    = 0x275,
	PS_ROGUE20    = 0x276,
	PS_ROGUE21    = 0x277,
	PS_ROGUE22    = 0x278,
	PS_ROGUE23    = 0x279,
	PS_ROGUE24    = 0x27A,
	PS_ROGUE25    = 0x27B,
	PS_ROGUE26    = 0x27C,
	PS_ROGUE27    = 0x27D,
	PS_ROGUE28    = 0x27E,
	PS_ROGUE29    = 0x27F,
	PS_ROGUE30    = 0x280,
	PS_ROGUE31    = 0x281,
	PS_ROGUE32    = 0x282,
	PS_ROGUE33    = 0x283,
	PS_ROGUE34    = 0x284,
	PS_ROGUE35    = 0x285,
	PS_ROGUE36    = 0x286,
	PS_ROGUE37    = 0x287,
	PS_ROGUE38    = 0x288,
	PS_ROGUE39    = 0x289,
	PS_ROGUE40    = 0x28A,
	PS_ROGUE41    = 0x28B,
	PS_ROGUE42    = 0x28C,
	PS_ROGUE43    = 0x28D,
	PS_ROGUE44    = 0x28E,
	PS_ROGUE45    = 0x28F,
	PS_ROGUE46    = 0x290,
	PS_ROGUE47    = 0x291,
	PS_ROGUE48    = 0x292,
	PS_ROGUE49    = 0x293,
	PS_ROGUE50    = 0x294,
	PS_ROGUE51    = 0x295,
	PS_ROGUE52    = 0x296,
	PS_ROGUE53    = 0x297,
	PS_ROGUE54    = 0x298,
	PS_ROGUE55    = 0x299,
	PS_ROGUE56    = 0x29A,
	PS_ROGUE57    = 0x29B,
	PS_ROGUE58    = 0x29C,
	PS_ROGUE59    = 0x29D,
	PS_ROGUE60    = 0x29E,
	PS_ROGUE61    = 0x29F,
	PS_ROGUE62    = 0x2A0,
	PS_ROGUE63    = 0x2A1,
	PS_ROGUE64    = 0x2A2,
	PS_ROGUE65    = 0x2A3,
	PS_ROGUE66    = 0x2A4,
	PS_ROGUE67    = 0x2A5,
	PS_ROGUE68    = 0x2A6,
	PS_ROGUE69    = 0x2A7,
	PS_ROGUE69B   = 0x2A8,
	PS_ROGUE70    = 0x2A9,
	PS_ROGUE71    = 0x2AA,
	PS_ROGUE72    = 0x2AB,
	PS_ROGUE73    = 0x2AC,
	PS_ROGUE74    = 0x2AD,
	PS_ROGUE75    = 0x2AE,
	PS_ROGUE76    = 0x2AF,
	PS_ROGUE77    = 0x2B0,
	PS_ROGUE78    = 0x2B1,
	PS_ROGUE79    = 0x2B2,
	PS_ROGUE80    = 0x2B3,
	PS_ROGUE81    = 0x2B4,
	PS_ROGUE82    = 0x2B5,
	PS_ROGUE83    = 0x2B6,
	PS_ROGUE84    = 0x2B7,
	PS_ROGUE85    = 0x2B8,
	PS_ROGUE86    = 0x2B9,
	PS_ROGUE87    = 0x2BA,
	PS_ROGUE88    = 0x2BB,
	PS_ROGUE89    = 0x2BC,
	PS_ROGUE90    = 0x2BD,
	PS_ROGUE91    = 0x2BE,
	PS_ROGUE92    = 0x2BF,
	PS_ROGUE93    = 0x2C0,
	PS_ROGUE94    = 0x2C1,
	PS_ROGUE95    = 0x2C2,
	PS_ROGUE96    = 0x2C3,
	PS_ROGUE97    = 0x2C4,
	PS_ROGUE98    = 0x2C5,
	PS_ROGUE99    = 0x2C6,
	PS_ROGUE100   = 0x2C7,
	PS_ROGUE101   = 0x2C8,
	PS_ROGUE102   = 0x2C9,
	PS_WARR1      = 0x2CA,
	PS_WARR2      = 0x2CB,
	PS_WARR3      = 0x2CC,
	PS_WARR4      = 0x2CD,
	PS_WARR5      = 0x2CE,
	PS_WARR6      = 0x2CF,
	PS_WARR7      = 0x2D0,
	PS_WARR8      = 0x2D1,
	PS_WARR9      = 0x2D2,
	PS_WARR10     = 0x2D3,
	PS_WARR11     = 0x2D4,
	PS_WARR12     = 0x2D5,
	PS_WARR13     = 0x2D6,
	PS_WARR14     = 0x2D7,
	PS_WARR14B    = 0x2D8,
	PS_WARR14C    = 0x2D9,
	PS_WARR15     = 0x2DA,
	PS_WARR15B    = 0x2DB,
	PS_WARR15C    = 0x2DC,
	PS_WARR16     = 0x2DD,
	PS_WARR16B    = 0x2DE,
	PS_WARR16C    = 0x2DF,
	PS_WARR17     = 0x2E0,
	PS_WARR18     = 0x2E1,
	PS_WARR19     = 0x2E2,
	PS_WARR20     = 0x2E3,
	PS_WARR21     = 0x2E4,
	PS_WARR22     = 0x2E5,
	PS_WARR23     = 0x2E6,
	PS_WARR24     = 0x2E7,
	PS_WARR25     = 0x2E8,
	PS_WARR26     = 0x2E9,
	PS_WARR27     = 0x2EA,
	PS_WARR28     = 0x2EB,
	PS_WARR29     = 0x2EC,
	PS_WARR30     = 0x2ED,
	PS_WARR31     = 0x2EE,
	PS_WARR32     = 0x2EF,
	PS_WARR33     = 0x2F0,
	PS_WARR34     = 0x2F1,
	PS_WARR35     = 0x2F2,
	PS_WARR36     = 0x2F3,
	PS_WARR37     = 0x2F4,
	PS_WARR38     = 0x2F5,
	PS_WARR39     = 0x2F6,
	PS_WARR40     = 0x2F7,
	PS_WARR41     = 0x2F8,
	PS_WARR42     = 0x2F9,
	PS_WARR43     = 0x2FA,
	PS_WARR44     = 0x2FB,
	PS_WARR45     = 0x2FC,
	PS_WARR46     = 0x2FD,
	PS_WARR47     = 0x2FE,
	PS_WARR48     = 0x2FF,
	PS_WARR49     = 0x300,
	PS_WARR50     = 0x301,
	PS_WARR51     = 0x302,
	PS_WARR52     = 0x303,
	PS_WARR53     = 0x304,
	PS_WARR54     = 0x305,
	PS_WARR55     = 0x306,
	PS_WARR56     = 0x307,
	PS_WARR57     = 0x308,
	PS_WARR58     = 0x309,
	PS_WARR59     = 0x30A,
	PS_WARR60     = 0x30B,
	PS_WARR61     = 0x30C,
	PS_WARR62     = 0x30D,
	PS_WARR63     = 0x30E,
	PS_WARR64     = 0x30F,
	PS_WARR65     = 0x310,
	PS_WARR66     = 0x311,
	PS_WARR67     = 0x312,
	PS_WARR68     = 0x313,
	PS_WARR69     = 0x314,
	PS_WARR69B    = 0x315,
	PS_WARR70     = 0x316,
	PS_WARR71     = 0x317,
	PS_WARR72     = 0x318,
	PS_WARR73     = 0x319,
	PS_WARR74     = 0x31A,
	PS_WARR75     = 0x31B,
	PS_WARR76     = 0x31C,
	PS_WARR77     = 0x31D,
	PS_WARR78     = 0x31E,
	PS_WARR79     = 0x31F,
	PS_WARR80     = 0x320,
	PS_WARR81     = 0x321,
	PS_WARR82     = 0x322,
	PS_WARR83     = 0x323,
	PS_WARR84     = 0x324,
	PS_WARR85     = 0x325,
	PS_WARR86     = 0x326,
	PS_WARR87     = 0x327,
	PS_WARR88     = 0x328,
	PS_WARR89     = 0x329,
	PS_WARR90     = 0x32A,
	PS_WARR91     = 0x32B,
	PS_WARR92     = 0x32C,
	PS_WARR93     = 0x32D,
	PS_WARR94     = 0x32E,
	PS_WARR95     = 0x32F,
	PS_WARR95B    = 0x330,
	PS_WARR95C    = 0x331,
	PS_WARR95D    = 0x332,
	PS_WARR95E    = 0x333,
	PS_WARR95F    = 0x334,
	PS_WARR96B    = 0x335,
	PS_WARR97     = 0x336,
	PS_WARR98     = 0x337,
	PS_WARR99     = 0x338,
	PS_WARR100    = 0x339,
	PS_WARR101    = 0x33A,
	PS_WARR102    = 0x33B,
	PS_NAR1       = 0x33C,
	PS_NAR2       = 0x33D,
	PS_NAR3       = 0x33E,
	PS_NAR4       = 0x33F,
	PS_NAR5       = 0x340,
	PS_NAR6       = 0x341,
	PS_NAR7       = 0x342,
	PS_NAR8       = 0x343,
	PS_NAR9       = 0x344,
	PS_DIABLVLINT = 0x345,
	USFX_CLEAVER  = 0x346,
	USFX_GARBUD1  = 0x347,
	USFX_GARBUD2  = 0x348,
	USFX_GARBUD3  = 0x349,
	USFX_GARBUD4  = 0x34A,
	USFX_IZUAL1   = 0x34B,
	USFX_LACH1    = 0x34C,
	USFX_LACH2    = 0x34D,
	USFX_LACH3    = 0x34E,
	USFX_LAZ1     = 0x34F,
	USFX_LAZ2     = 0x350,
	USFX_SKING1   = 0x351,
	USFX_SNOT1    = 0x352,
	USFX_SNOT2    = 0x353,
	USFX_SNOT3    = 0x354,
	USFX_WARLRD1  = 0x355,
	USFX_WLOCK1   = 0x356,
	USFX_ZHAR1    = 0x357,
	USFX_ZHAR2    = 0x358,
	USFX_DIABLOD  = 0x359,
} _sfx_id;

typedef enum sfx_flag {
	SFX_STREAM   = 0x01,
	SFX_MISC     = 0x02,
	SFX_UI       = 0x04,
	SFX_08       = 0x08,
	SFX_ROGUE    = 0x10,
	SFX_WARRIOR  = 0x20,
	SFX_SORCEROR = 0x40,
	SFX_LOADED   = 0x80,
} sfx_flag;

typedef enum item_equip_type {
	ILOC_NONE        = 0x0,
	ILOC_ONEHAND     = 0x1,
	ILOC_TWOHAND     = 0x2,
	ILOC_ARMOR       = 0x3,
	ILOC_HELM        = 0x4,
	ILOC_RING        = 0x5,
	ILOC_AMULET      = 0x6,
	ILOC_UNEQUIPABLE = 0x7,
	ILOC_BELT        = 0x8,
	ILOC_INVALID     = -1,
} item_equip_type;

typedef enum missile_id {
	MIS_ARROW         = 0x0,
	MIS_FIREBOLT      = 0x1,
	MIS_GUARDIAN      = 0x2,
	MIS_RNDTELEPORT   = 0x3,
	MIS_LIGHTBALL     = 0x4,
	MIS_FIREWALL      = 0x5,
	MIS_FIREBALL      = 0x6,
	MIS_LIGHTCTRL     = 0x7,
	MIS_LIGHTNING     = 0x8,
	MIS_MISEXP        = 0x9,
	MIS_TOWN          = 0xA,
	MIS_FLASH         = 0xB,
	MIS_FLASH2        = 0xC,
	MIS_MANASHIELD    = 0xD,
	MIS_FIREMOVE      = 0xE,
	MIS_CHAIN         = 0xF,
	MIS_SENTINAL      = 0x10, // TODO: Check beta
	MIS_BLODSTAR      = 0x11, // TODO: Check beta
	MIS_BONE          = 0x12, // TODO: Check beta
	MIS_METLHIT       = 0x13, // TODO: Check beta
	MIS_RHINO         = 0x14,
	MIS_MAGMABALL     = 0x15,
	MIS_LIGHTCTRL2    = 0x16,
	MIS_LIGHTNING2    = 0x17,
	MIS_FLARE         = 0x18,
	MIS_MISEXP2       = 0x19,
	MIS_TELEPORT      = 0x1A,
	MIS_FARROW        = 0x1B,
	MIS_DOOMSERP      = 0x1C,
	MIS_FIREWALLA     = 0x1D, // TODO: Check beta
	MIS_STONE         = 0x1E,
	MIS_NULL_1F       = 0x1F,
	MIS_INVISIBL      = 0x20,
	MIS_GOLEM         = 0x21,
	MIS_ETHEREALIZE   = 0x22,
	MIS_BLODBUR       = 0x23, // TODO: Check beta
	MIS_BOOM          = 0x24,
	MIS_HEAL          = 0x25,
	MIS_FIREWALLC     = 0x26,
	MIS_INFRA         = 0x27,
	MIS_IDENTIFY      = 0x28,
	MIS_WAVE          = 0x29,
	MIS_NOVA          = 0x2A,
	MIS_BLODBOIL      = 0x2B,
	MIS_APOCA         = 0x2C,
	MIS_REPAIR        = 0x2D,
	MIS_RECHARGE      = 0x2E,
	MIS_DISARM        = 0x2F,
	MIS_FLAME         = 0x30,
	MIS_FLAMEC        = 0x31,
	MIS_FIREMAN       = 0x32, // TODO: Check beta
	MIS_KRULL         = 0x33, // TODO: Check beta
	MIS_CBOLT         = 0x34,
	MIS_HBOLT         = 0x35,
	MIS_RESURRECT     = 0x36,
	MIS_TELEKINESIS   = 0x37,
	MIS_LARROW        = 0x38,
	MIS_ACID          = 0x39,
	MIS_MISEXP3       = 0x3A,
	MIS_ACIDPUD       = 0x3B,
	MIS_HEALOTHER     = 0x3C,
	MIS_ELEMENT       = 0x3D,
	MIS_RESURRECTBEAM = 0x3E,
	MIS_BONESPIRIT    = 0x3F,
	MIS_WEAPEXP       = 0x40,
	MIS_RPORTAL       = 0x41,
	MIS_BOOM2         = 0x42,
	MIS_DIABAPOCA     = 0x43,
} missile_id;

typedef enum missile_graphic_id {
	MFILE_ARROWS   = 0x0,
	MFILE_FIREBA   = 0x1,
	MFILE_GUARD    = 0x2,
	MFILE_LGHNING  = 0x3,
	MFILE_FIREWAL  = 0x4,
	MFILE_MAGBLOS  = 0x5,
	MFILE_PORTAL   = 0x6,
	MFILE_BLUEXFR  = 0x7,
	MFILE_BLUEXBK  = 0x8,
	MFILE_MANASHLD = 0x9,
	MFILE_BLOOD    = 0xA,
	MFILE_BONE     = 0xB,
	MFILE_METLHIT  = 0xC,
	MFILE_FARROW   = 0xD,
	MFILE_DOOM     = 0xE,
	MFILE_0F       = 0xF,
	MFILE_BLODBUR  = 0x10,
	MFILE_NEWEXP   = 0x11,
	MFILE_SHATTER1 = 0x12,
	MFILE_BIGEXP   = 0x13,
	MFILE_INFERNO  = 0x14,
	MFILE_THINLGHT = 0x15,
	MFILE_FLARE    = 0x16,
	MFILE_FLAREEXP = 0x17,
	MFILE_MAGBALL  = 0x18,
	MFILE_KRULL    = 0x19,
	MFILE_MINILTNG = 0x1A,
	MFILE_HOLY     = 0x1B,
	MFILE_HOLYEXPL = 0x1C,
	MFILE_LARROW   = 0x1D,
	MFILE_FIRARWEX = 0x1E,
	MFILE_ACIDBF   = 0x1F,
	MFILE_ACIDSPLA = 0x20,
	MFILE_ACIDPUD  = 0x21,
	MFILE_ETHRSHLD = 0x22,
	MFILE_FIRERUN  = 0x23,
	MFILE_RESSUR1  = 0x24,
	MFILE_SKLBALL  = 0x25,
	MFILE_RPORTAL  = 0x26,
	MFILE_FIREPLAR = 0x27,
	MFILE_SCUBMISB = 0x28,
	MFILE_SCBSEXPB = 0x29,
	MFILE_SCUBMISC = 0x2A,
	MFILE_SCBSEXPC = 0x2B,
	MFILE_SCUBMISD = 0x2C,
	MFILE_SCBSEXPD = 0x2D,
	MFILE_NONE     = 0x2E, // check if issue is upstream (swap MFILE_NONE and MFILE_NULL)
	MFILE_INVALID  = 0x2F,
	MFILE_NULL     = 0xFF,
} missile_graphic_id;

typedef enum _mai_id {
	AI_ZOMBIE   = 0,
	AI_FAT      = 1,
	AI_SKELSD   = 2,
	AI_SKELBOW  = 3,
	AI_SCAV     = 4,
	AI_RHINO    = 5,
	AI_GOATMC   = 6,
	AI_GOATBOW  = 7,
	AI_FALLEN   = 8,
	AI_MAGMA    = 9,
	AI_SKELKING = 10,
	AI_BAT      = 11,
	AI_GARG     = 12,
	AI_CLEAVER  = 13,
	AI_SUCC     = 14,
	AI_SNEAK    = 15,
	AI_STORM    = 16,
	AI_FIREMAN  = 17,
	AI_GARBUD   = 18,
	AI_ACID     = 19,
	AI_ACIDUNIQ = 20,
	AI_GOLUM    = 21,
	AI_ZHAR     = 22,
	AI_SNOTSPIL = 23,
	AI_SNAKE    = 24,
	AI_COUNSLR  = 25,
	AI_MEGA     = 26,
	AI_DIABLO   = 27,
	AI_LAZURUS  = 28,
	AI_LAZHELP  = 29,
	AI_LACHDAN  = 30,
	AI_WARLORD  = 31,
} _mai_id;

typedef enum _mc_id {
	MC_UNDEAD = 0,
	MC_DEMON  = 1,
	MC_ANIMAL = 2,
} _mc_id;

typedef enum FILE_SYSTEM {
	FS_PC = 0,
	FS_CD = 1,
} FILE_SYSTEM;

typedef enum _artfonts {
	AF_SMALL     = 0,
	AF_SMALLGRAY = 1,
	AF_MED       = 2,
	AF_MEDGRAY   = 3,
	AF_BIG       = 4,
	AF_BIGGRAY   = 5,
	AF_HUGE      = 6,
	AF_HUGEGRAY  = 7,
} _artfonts;

typedef enum _monster_id {
	MT_NZOMBIE  = 0x0,
	MT_BZOMBIE  = 0x1,
	MT_GZOMBIE  = 0x2,
	MT_YZOMBIE  = 0x3,
	MT_RFALLSP  = 0x4,
	MT_DFALLSP  = 0x5,
	MT_YFALLSP  = 0x6,
	MT_BFALLSP  = 0x7,
	MT_WSKELAX  = 0x8,
	MT_TSKELAX  = 0x9,
	MT_RSKELAX  = 0xA,
	MT_XSKELAX  = 0xB,
	MT_RFALLSD  = 0xC,
	MT_DFALLSD  = 0xD,
	MT_YFALLSD  = 0xE,
	MT_BFALLSD  = 0xF,
	MT_NSCAV    = 0x10,
	MT_BSCAV    = 0x11,
	MT_WSCAV    = 0x12,
	MT_YSCAV    = 0x13,
	MT_WSKELBW  = 0x14,
	MT_TSKELBW  = 0x15,
	MT_RSKELBW  = 0x16,
	MT_XSKELBW  = 0x17,
	MT_WSKELSD  = 0x18,
	MT_TSKELSD  = 0x19,
	MT_RSKELSD  = 0x1A,
	MT_XSKELSD  = 0x1B,
	MT_INVILORD = 0x1C,
	MT_SNEAK    = 0x1D,
	MT_STALKER  = 0x1E,
	MT_UNSEEN   = 0x1F,
	MT_ILLWEAV  = 0x20,
	MT_LRDSAYTR = 0x21,
	MT_NGOATMC  = 0x22,
	MT_BGOATMC  = 0x23,
	MT_RGOATMC  = 0x24,
	MT_GGOATMC  = 0x25,
	MT_FIEND    = 0x26,
	MT_BLINK    = 0x27,
	MT_GLOOM    = 0x28,
	MT_FAMILIAR = 0x29,
	MT_NGOATBW  = 0x2A,
	MT_BGOATBW  = 0x2B,
	MT_RGOATBW  = 0x2C,
	MT_GGOATBW  = 0x2D,
	MT_NACID    = 0x2E,
	MT_RACID    = 0x2F,
	MT_BACID    = 0x30,
	MT_XACID    = 0x31,
	MT_SKING    = 0x32,
	MT_CLEAVER  = 0x33,
	MT_FAT      = 0x34,
	MT_MUDMAN   = 0x35,
	MT_TOAD     = 0x36,
	MT_FLAYED   = 0x37,
	MT_WYRM     = 0x38,
	MT_CAVSLUG  = 0x39,
	MT_DVLWYRM  = 0x3A,
	MT_DEVOUR   = 0x3B,
	MT_NMAGMA   = 0x3C,
	MT_YMAGMA   = 0x3D,
	MT_BMAGMA   = 0x3E,
	MT_WMAGMA   = 0x3F,
	MT_HORNED   = 0x40,
	MT_MUDRUN   = 0x41,
	MT_FROSTC   = 0x42,
	MT_OBLORD   = 0x43,
	MT_BONEDMN  = 0x44,
	MT_REDDTH   = 0x45,
	MT_LTCHDMN  = 0x46,
	MT_UDEDBLRG = 0x47,
	MT_INCIN    = 0x48,
	MT_FLAMLRD  = 0x49,
	MT_DOOMFIRE = 0x4A,
	MT_HELLBURN = 0x4B,
	MT_STORM    = 0x4C,
	MT_RSTORM   = 0x4D,
	MT_STORML   = 0x4E,
	MT_MAEL     = 0x4F,
	MT_BIGFALL  = 0x50,
	MT_WINGED   = 0x51,
	MT_GARGOYLE = 0x52,
	MT_BLOODCLW = 0x53,
	MT_DEATHW   = 0x54,
	MT_MEGA     = 0x55,
	MT_GUARD    = 0x56,
	MT_VTEXLRD  = 0x57,
	MT_BALROG   = 0x58,
	MT_NSNAKE   = 0x59,
	MT_RSNAKE   = 0x5A,
	MT_BSNAKE   = 0x5B,
	MT_GSNAKE   = 0x5C,
	MT_NBLACK   = 0x5D,
	MT_RTBLACK  = 0x5E,
	MT_BTBLACK  = 0x5F,
	MT_RBLACK   = 0x60,
	MT_UNRAV    = 0x61,
	MT_HOLOWONE = 0x62,
	MT_PAINMSTR = 0x63,
	MT_REALWEAV = 0x64,
	MT_SUCCUBUS = 0x65,
	MT_SNOWWICH = 0x66,
	MT_HLSPWN   = 0x67,
	MT_SOLBRNR  = 0x68,
	MT_COUNSLR  = 0x69,
	MT_MAGISTR  = 0x6A,
	MT_CABALIST = 0x6B,
	MT_ADVOCATE = 0x6C,
	MT_GOLEM    = 0x6D,
	MT_DIABLO   = 0x6E,
	MT_DARKMAGE = 0x6F,
	NUM_MTYPES
} _monster_id;

// this enum contains indexes from UniqMonst array for special unique monsters (usually quest related)
typedef enum {
	UMT_GARBUD    = 0,
	UMT_SKELKING  = 1,
	UMT_ZHAR      = 2,
	UMT_SNOTSPIL  = 3,
	UMT_LAZURUS   = 4,
	UMT_RED_VEX   = 5,
	UMT_BLACKJADE = 6,
	UMT_LACHDAN   = 7,
	UMT_WARLORD   = 8,
	UMT_BUTCHER   = 9,
} _uniq_monsterid;

typedef enum monster_flag {
	MFLAG_HIDDEN          = 0x01,
	MFLAG_LOCK_ANIMATION  = 0x02,
	MFLAG_ALLOW_SPECIAL   = 0x04,
	MFLAG_NOHEAL          = 0x08,
	MFLAG_TARGETS_MONSTER = 0x10,
	MFLAG_GOLEM           = 0x20,
	MFLAG_QUEST_COMPLETE  = 0x40,
	MFLAG_KNOCKBACK       = 0x80,
	MFLAG_SEARCH          = 0x100,
	MFLAG_CAN_OPEN_DOOR   = 0x200,
	MFLAG_NO_ENEMY        = 0x400,
	MFLAG_UNUSED          = 0x800,
	MFLAG_NOLIFESTEAL     = 0x1000
} monster_flag;

typedef enum monster_goal {
	MGOAL_NORMAL    = 1,
	MGOAL_RETREAT   = 2,
	MGOAL_HEALING   = 3,
	MGOAL_MOVE      = 4,
	MGOAL_SHOOT     = 5,
	MGOAL_INQUIRING = 6,
	MGOAL_TALKING   = 7,
} monster_goal;

typedef enum monster_resistance {
	RESIST_MAGIC     = 0x01,
	RESIST_FIRE      = 0x02,
	RESIST_LIGHTNING = 0x04,
	IMUNE_MAGIC      = 0x08,
	IMUNE_FIRE       = 0x10,
	IMUNE_LIGHTNING  = 0x20,
	IMUNE_NULL_40    = 0x40,
	IMUNE_ACID       = 0x80,
} monster_resistance;

typedef enum missile_resistance {
	MISR_FIRE      = 1,
	MISR_LIGHTNING = 2,
	MISR_MAGIC     = 3,
	MISR_ACID      = 4,
} missile_resistance;

typedef enum _speech_id {
	QUEST_KING1      = 0x0,
	QUEST_KING2      = 0x1,
	QUEST_KING3      = 0x2,
	QUEST_KING4      = 0x3,
	QUEST_KING5      = 0x4,
	QUEST_KING6      = 0x5,
	QUEST_KING7      = 0x6,
	QUEST_KING8      = 0x7,
	QUEST_KING9      = 0x8,
	QUEST_KING10     = 0x9,
	QUEST_KING11     = 0xA,
	QUEST_BANNER1    = 0xB,
	QUEST_BANNER2    = 0xC,
	QUEST_BANNER3    = 0xD,
	QUEST_BANNER4    = 0xE,
	QUEST_BANNER5    = 0xF,
	QUEST_BANNER6    = 0x10,
	QUEST_BANNER7    = 0x11,
	QUEST_BANNER8    = 0x12,
	QUEST_BANNER9    = 0x13,
	QUEST_BANNER10   = 0x14,
	QUEST_BANNER11   = 0x15,
	QUEST_BANNER12   = 0x16,
	QUEST_VILE1      = 0x17,
	QUEST_VILE2      = 0x18,
	QUEST_VILE3      = 0x19,
	QUEST_VILE4      = 0x1A,
	QUEST_VILE5      = 0x1B,
	QUEST_VILE6      = 0x1C,
	QUEST_VILE7      = 0x1D,
	QUEST_VILE8      = 0x1E,
	QUEST_VILE9      = 0x1F,
	QUEST_VILE10     = 0x20,
	QUEST_VILE11     = 0x21,
	QUEST_VILE12     = 0x22,
	QUEST_VILE13     = 0x23,
	QUEST_VILE14     = 0x24,
	QUEST_POISON1    = 0x25,
	QUEST_POISON2    = 0x26,
	QUEST_POISON3    = 0x27,
	QUEST_POISON4    = 0x28,
	QUEST_POISON5    = 0x29,
	QUEST_POISON6    = 0x2A,
	QUEST_POISON7    = 0x2B,
	QUEST_POISON8    = 0x2C,
	QUEST_POISON9    = 0x2D,
	QUEST_POISON10   = 0x2E,
	QUEST_BONE1      = 0x2F,
	QUEST_BONE2      = 0x30,
	QUEST_BONE3      = 0x31,
	QUEST_BONE4      = 0x32,
	QUEST_BONE5      = 0x33,
	QUEST_BONE6      = 0x34,
	QUEST_BONE7      = 0x35,
	QUEST_BONE8      = 0x36,
	QUEST_BUTCH1     = 0x37,
	QUEST_BUTCH2     = 0x38,
	QUEST_BUTCH3     = 0x39,
	QUEST_BUTCH4     = 0x3A,
	QUEST_BUTCH5     = 0x3B,
	QUEST_BUTCH6     = 0x3C,
	QUEST_BUTCH7     = 0x3D,
	QUEST_BUTCH8     = 0x3E,
	QUEST_BUTCH9     = 0x3F,
	QUEST_BUTCH10    = 0x40,
	QUEST_BLIND1     = 0x41,
	QUEST_BLIND2     = 0x42,
	QUEST_BLIND3     = 0x43,
	QUEST_BLIND4     = 0x44,
	QUEST_BLIND5     = 0x45,
	QUEST_BLIND6     = 0x46,
	QUEST_BLIND7     = 0x47,
	QUEST_BLIND8     = 0x48,
	QUEST_VEIL1      = 0x49,
	QUEST_VEIL2      = 0x4A,
	QUEST_VEIL3      = 0x4B,
	QUEST_VEIL4      = 0x4C,
	QUEST_VEIL5      = 0x4D,
	QUEST_VEIL6      = 0x4E,
	QUEST_VEIL7      = 0x4F,
	QUEST_VEIL8      = 0x50,
	QUEST_VEIL9      = 0x51,
	QUEST_VEIL10     = 0x52,
	QUEST_VEIL11     = 0x53,
	QUEST_ANVIL1     = 0x54,
	QUEST_ANVIL2     = 0x55,
	QUEST_ANVIL3     = 0x56,
	QUEST_ANVIL4     = 0x57,
	QUEST_ANVIL5     = 0x58,
	QUEST_ANVIL6     = 0x59,
	QUEST_ANVIL7     = 0x5A,
	QUEST_ANVIL8     = 0x5B,
	QUEST_ANVIL9     = 0x5C,
	QUEST_ANVIL10    = 0x5D,
	QUEST_BLOOD1     = 0x5E,
	QUEST_BLOOD2     = 0x5F,
	QUEST_BLOOD3     = 0x60,
	QUEST_BLOOD4     = 0x61,
	QUEST_BLOOD5     = 0x62,
	QUEST_BLOOD6     = 0x63,
	QUEST_BLOOD7     = 0x64,
	QUEST_BLOOD8     = 0x65,
	QUEST_WARLRD1    = 0x66,
	QUEST_WARLRD2    = 0x67,
	QUEST_WARLRD3    = 0x68,
	QUEST_WARLRD4    = 0x69,
	QUEST_WARLRD5    = 0x6A,
	QUEST_WARLRD6    = 0x6B,
	QUEST_WARLRD7    = 0x6C,
	QUEST_WARLRD8    = 0x6D,
	QUEST_WARLRD9    = 0x6E,
	QUEST_INFRA1     = 0x6F,
	QUEST_INFRA2     = 0x70,
	QUEST_INFRA3     = 0x71,
	QUEST_INFRA4     = 0x72,
	QUEST_INFRA5     = 0x73,
	QUEST_INFRA6     = 0x74,
	QUEST_INFRA7     = 0x75,
	QUEST_INFRA8     = 0x76,
	QUEST_INFRA9     = 0x77,
	QUEST_INFRA10    = 0x78,
	QUEST_MUSH1      = 0x79,
	QUEST_MUSH2      = 0x7A,
	QUEST_MUSH3      = 0x7B,
	QUEST_MUSH4      = 0x7C,
	QUEST_MUSH5      = 0x7D,
	QUEST_MUSH6      = 0x7E,
	QUEST_MUSH7      = 0x7F,
	QUEST_MUSH8      = 0x80,
	QUEST_MUSH9      = 0x81,
	QUEST_MUSH10     = 0x82,
	QUEST_MUSH11     = 0x83,
	QUEST_MUSH12     = 0x84,
	QUEST_MUSH13     = 0x85,
	QUEST_DOOM1      = 0x86,
	QUEST_DOOM2      = 0x87,
	QUEST_DOOM3      = 0x88,
	QUEST_DOOM4      = 0x89,
	QUEST_DOOM5      = 0x8A,
	QUEST_DOOM6      = 0x8B,
	QUEST_DOOM7      = 0x8C,
	QUEST_DOOM8      = 0x8D,
	QUEST_DOOM9      = 0x8E,
	QUEST_DOOM10     = 0x8F,
	QUEST_GARBUD1    = 0x90,
	QUEST_GARBUD2    = 0x91,
	QUEST_GARBUD3    = 0x92,
	QUEST_GARBUD4    = 0x93,
	QUEST_ZHAR1      = 0x94,
	QUEST_ZHAR2      = 0x95,
	QUEST_STORY1     = 0x96,
	QUEST_STORY2     = 0x97,
	QUEST_STORY3     = 0x98,
	QUEST_STORY4     = 0x99,
	QUEST_STORY5     = 0x9A,
	QUEST_STORY6     = 0x9B,
	QUEST_STORY7     = 0x9C,
	QUEST_STORY9     = 0x9D,
	QUEST_STORY10    = 0x9E,
	QUEST_STORY11    = 0x9F,
	QUEST_OGDEN1     = 0xA0,
	QUEST_OGDEN2     = 0xA1,
	QUEST_OGDEN3     = 0xA2,
	QUEST_OGDEN4     = 0xA3,
	QUEST_OGDEN5     = 0xA4,
	QUEST_OGDEN6     = 0xA5,
	QUEST_OGDEN8     = 0xA6,
	QUEST_OGDEN9     = 0xA7,
	QUEST_OGDEN10    = 0xA8,
	QUEST_PEPIN1     = 0xA9,
	QUEST_PEPIN2     = 0xAA,
	QUEST_PEPIN3     = 0xAB,
	QUEST_PEPIN4     = 0xAC,
	QUEST_PEPIN5     = 0xAD,
	QUEST_PEPIN6     = 0xAE,
	QUEST_PEPIN7     = 0xAF,
	QUEST_PEPIN9     = 0xB0,
	QUEST_PEPIN10    = 0xB1,
	QUEST_PEPIN11    = 0xB2,
	QUEST_GILLIAN1   = 0xB3,
	QUEST_GILLIAN2   = 0xB4,
	QUEST_GILLIAN3   = 0xB5,
	QUEST_GILLIAN4   = 0xB6,
	QUEST_GILLIAN5   = 0xB7,
	QUEST_GILLIAN6   = 0xB8,
	QUEST_GILLIAN7   = 0xB9,
	QUEST_GILLIAN9   = 0xBA,
	QUEST_GILLIAN10  = 0xBB,
	QUEST_GRISWOLD1  = 0xBC,
	QUEST_GRISWOLD2  = 0xBD,
	QUEST_GRISWOLD3  = 0xBE,
	QUEST_GRISWOLD4  = 0xBF,
	QUEST_GRISWOLD5  = 0xC0,
	QUEST_GRISWOLD6  = 0xC1,
	QUEST_GRISWOLD7  = 0xC2,
	QUEST_GRISWOLD8  = 0xC3,
	QUEST_GRISWOLD9  = 0xC4,
	QUEST_GRISWOLD10 = 0xC5,
	QUEST_GRISWOLD12 = 0xC6,
	QUEST_GRISWOLD13 = 0xC7,
	QUEST_FARNHAM1   = 0xC8,
	QUEST_FARNHAM2   = 0xC9,
	QUEST_FARNHAM3   = 0xCA,
	QUEST_FARNHAM4   = 0xCB,
	QUEST_FARNHAM5   = 0xCC,
	QUEST_FARNHAM6   = 0xCD,
	QUEST_FARNHAM8   = 0xCE,
	QUEST_FARNHAM9   = 0xCF,
	QUEST_FARNHAM10  = 0xD0,
	QUEST_FARNHAM11  = 0xD1,
	QUEST_FARNHAM12  = 0xD2,
	QUEST_FARNHAM13  = 0xD3,
	QUEST_ADRIA1     = 0xD4,
	QUEST_ADRIA2     = 0xD5,
	QUEST_ADRIA3     = 0xD6,
	QUEST_ADRIA4     = 0xD7,
	QUEST_ADRIA5     = 0xD8,
	QUEST_ADRIA6     = 0xD9,
	QUEST_ADRIA7     = 0xDA,
	QUEST_ADRIA8     = 0xDB,
	QUEST_ADRIA9     = 0xDC,
	QUEST_ADRIA10    = 0xDD,
	QUEST_ADRIA12    = 0xDE,
	QUEST_ADRIA13    = 0xDF,
	QUEST_WIRT1      = 0xE0,
	QUEST_WIRT2      = 0xE1,
	QUEST_WIRT3      = 0xE2,
	QUEST_WIRT4      = 0xE3,
	QUEST_WIRT5      = 0xE4,
	QUEST_WIRT6      = 0xE5,
	QUEST_WIRT7      = 0xE6,
	QUEST_WIRT8      = 0xE7,
	QUEST_WIRT9      = 0xE8,
	QUEST_WIRT11     = 0xE9,
	QUEST_WIRT12     = 0xEA,
	QUEST_BONER      = 0xEB,
	QUEST_BLOODY     = 0xEC,
	QUEST_BLINDING   = 0xED,
	QUEST_BLOODWAR   = 0xEE,
	QUEST_MBONER     = 0xEF,
	QUEST_MBLOODY    = 0xF0,
	QUEST_MBLINDING  = 0xF1,
	QUEST_MBLOODWAR  = 0xF2,
	QUEST_RBONER     = 0xF3,
	QUEST_RBLOODY    = 0xF4,
	QUEST_RBLINDING  = 0xF5,
	QUEST_RBLOODWAR  = 0xF6,
	QUEST_COW1       = 0xF7,
	QUEST_COW2       = 0xF8,
	QUEST_BOOK11     = 0xF9,
	QUEST_BOOK12     = 0xFA,
	QUEST_BOOK13     = 0xFB,
	QUEST_BOOK21     = 0xFC,
	QUEST_BOOK22     = 0xFD,
	QUEST_BOOK23     = 0xFE,
	QUEST_BOOK31     = 0xFF,
	QUEST_BOOK32     = 0x100,
	QUEST_BOOK33     = 0x101,
	QUEST_INTRO      = 0x102
} _speech_id;

typedef enum object_graphic_id {
	OFILE_L1BRAZ   = 0x0,
	OFILE_L1DOORS  = 0x1,
	OFILE_LEVER    = 0x2,
	OFILE_CHEST1   = 0x3,
	OFILE_CHEST2   = 0x4,
	OFILE_BANNER   = 0x5,
	OFILE_SKULPILE = 0x6,
	OFILE_SKULFIRE = 0x7,
	OFILE_SKULSTIK = 0x8,
	OFILE_CRUXSK1  = 0x9,
	OFILE_CRUXSK2  = 0xA,
	OFILE_CRUXSK3  = 0xB,
	OFILE_BOOK1    = 0xC,
	OFILE_BOOK2    = 0xD,
	OFILE_ROCKSTAN = 0xE,
	OFILE_ANGEL    = 0xF,
	OFILE_CHEST3   = 0x10,
	OFILE_BURNCROS = 0x11,
	OFILE_CANDLE2  = 0x12,
	OFILE_NUDE2    = 0x13,
	OFILE_SWITCH4  = 0x14,
	OFILE_TNUDEM   = 0x15,
	OFILE_TNUDEW   = 0x16,
	OFILE_TSOUL    = 0x17,
	OFILE_L2DOORS  = 0x18,
	OFILE_WTORCH4  = 0x19,
	OFILE_WTORCH3  = 0x1A,
	OFILE_SARC     = 0x1B,
	OFILE_FLAME1   = 0x1C,
	OFILE_PRSRPLT1 = 0x1D,
	OFILE_TRAPHOLE = 0x1E,
	OFILE_MINIWATR = 0x1F,
	OFILE_WTORCH2  = 0x20,
	OFILE_WTORCH1  = 0x21,
	OFILE_BCASE    = 0x22,
	OFILE_BSHELF   = 0x23,
	OFILE_WEAPSTND = 0x24,
	OFILE_BARREL   = 0x25,
	OFILE_BARRELEX = 0x26,
	OFILE_LSHRINEG = 0x27,
	OFILE_RSHRINEG = 0x28,
	OFILE_BLOODFNT = 0x29,
	OFILE_DECAP    = 0x2A,
	OFILE_PEDISTL  = 0x2B,
	OFILE_L3DOORS  = 0x2C,
	OFILE_PFOUNTN  = 0x2D,
	OFILE_ARMSTAND = 0x2E,
	OFILE_GOATSHRN = 0x2F,
	OFILE_CAULDREN = 0x30,
	OFILE_MFOUNTN  = 0x31,
	OFILE_TFOUNTN  = 0x32,
	OFILE_ALTBOY   = 0x33,
	OFILE_MCIRL    = 0x34,
	OFILE_BKSLBRNT = 0x35,
	OFILE_MUSHPTCH = 0x36,
	OFILE_LZSTAND  = 0x37,
} object_graphic_id;

typedef enum dungeon_type {
	DTYPE_TOWN      = 0x0,
	DTYPE_CATHEDRAL = 0x1,
	DTYPE_CATACOMBS = 0x2,
	DTYPE_CAVES     = 0x3,
	DTYPE_HELL      = 0x4,
	DTYPE_NONE      = 0xFF,
} dungeon_type;

typedef enum dflag {
	BFLAG_MISSILE     = 0x01,
	BFLAG_VISIBLE     = 0x02,
	BFLAG_DEAD_PLAYER = 0x04,
	BFLAG_POPULATED   = 0x08,
	BFLAG_MONSTLR     = 0x10,
	BFLAG_PLAYERLR    = 0x20,
	BFLAG_LIT         = 0x40,
	BFLAG_EXPLORED    = 0x80,
} dflag;

typedef enum dungeon_message {
	DMSG_CATHEDRAL = 1 << 0,
	DMSG_CATACOMBS = 1 << 1,
	DMSG_CAVES     = 1 << 2,
	DMSG_HELL      = 1 << 3,
	DMSG_DIABLO    = 1 << 4,
} dungeon_message;

typedef enum diablo_message {
	EMSG_NONE                   = 0,
	EMSG_NO_AUTOMAP_IN_TOWN     = 1,
	EMSG_NO_MULTIPLAYER_IN_DEMO = 2,
	EMSG_DIRECT_SOUND_FAILED    = 3,
	EMSG_NOT_IN_SHAREWARE       = 4,
	EMSG_NO_SPACE_TO_SAVE       = 5,
	EMSG_NO_PAUSE_IN_TOWN       = 6,
	EMSG_COPY_TO_HDD            = 7,
	EMSG_DESYNC                 = 8,
	EMSG_NO_PAUSE_IN_MP         = 9,
	EMSG_LOADING                = 10,
	EMSG_SAVING                 = 11,
	EMSG_SHRINE_MYSTERIOUS      = 12,
	EMSG_SHRINE_HIDDEN          = 13,
	EMSG_SHRINE_GLOOMY          = 14,
	EMSG_SHRINE_WEIRD           = 15,
	EMSG_SHRINE_MAGICAL         = 16,
	EMSG_SHRINE_STONE           = 17,
	EMSG_SHRINE_RELIGIOUS       = 18,
	EMSG_SHRINE_ENCHANTED       = 19,
	EMSG_SHRINE_THAUMATURGIC    = 20,
	EMSG_SHRINE_FASCINATING     = 21,
	EMSG_SHRINE_CRYPTIC         = 22,
	EMSG_SHRINE_UNUSED          = 23,
	EMSG_SHRINE_ELDRITCH        = 24,
	EMSG_SHRINE_EERIE           = 25,
	EMSG_SHRINE_DIVINE          = 26,
	EMSG_SHRINE_HOLY            = 27,
	EMSG_SHRINE_SACRED          = 28,
	EMSG_SHRINE_SPIRITUAL       = 29,
	EMSG_SHRINE_SPOOKY1         = 30,
	EMSG_SHRINE_SPOOKY2         = 31,
	EMSG_SHRINE_ABANDONED       = 32,
	EMSG_SHRINE_CREEPY          = 33,
	EMSG_SHRINE_QUIET           = 34,
	EMSG_SHRINE_SECLUDED        = 35,
	EMSG_SHRINE_ORNATE          = 36,
	EMSG_SHRINE_GLIMMERING      = 37,
	EMSG_SHRINE_TAINTED1        = 38,
	EMSG_SHRINE_TAINTED2        = 39,
	EMSG_REQUIRES_LVL_8         = 40,
	EMSG_REQUIRES_LVL_13        = 41,
	EMSG_REQUIRES_LVL_17        = 42,
	EMSG_BONECHAMB              = 43,
} diablo_message;

typedef enum magic_type {
	STYPE_FIRE      = 0x0,
	STYPE_LIGHTNING = 0x1,
	STYPE_MAGIC     = 0x2,
} magic_type;

typedef enum theme_id {
	THEME_BARREL            = 0x0,
	THEME_SHRINE            = 0x1,
	THEME_MONSTPIT          = 0x2,
	THEME_SKELROOM          = 0x3,
	THEME_TREASURE          = 0x4,
	THEME_LIBRARY           = 0x5,
	THEME_TORTURE           = 0x6,
	THEME_BLOODFOUNTAIN     = 0x7,
	THEME_DECAPITATED       = 0x8,
	THEME_PURIFYINGFOUNTAIN = 0x9,
	THEME_ARMORSTAND        = 0xA,
	THEME_GOATSHRINE        = 0xB,
	THEME_CAULDRON          = 0xC,
	THEME_MURKYFOUNTAIN     = 0xD,
	THEME_TEARFOUNTAIN      = 0xE,
	THEME_BRNCROSS          = 0xF,
	THEME_WEAPONRACK        = 0x10,
	THEME_NONE              = -1,
} theme_id;

typedef enum event_type {
	EVENT_TYPE_PLAYER_CREATE_GAME = 1,
	EVENT_TYPE_2                  = 2,
	EVENT_TYPE_PLAYER_LEAVE_GAME  = 3,
	EVENT_TYPE_PLAYER_MESSAGE     = 4,
	EVENT_TYPE_5                  = 5,
	EVENT_TYPE_6                  = 6,
	EVENT_TYPE_7                  = 7,
	EVENT_TYPE_8                  = 8,
	EVENT_TYPE_9                  = 9,
	EVENT_TYPE_10                 = 10,
	EVENT_TYPE_11                 = 11,
	EVENT_TYPE_12                 = 12,
	EVENT_TYPE_13                 = 13,
	EVENT_TYPE_14                 = 14,
	EVENT_TYPE_15                 = 15,
} event_type;

typedef enum _copyprot_results {
	COPYPROT_OK     = 1,
	COPYPROT_CANCEL = 2,
} _copyprot_results;

typedef enum text_color {
	COL_WHITE = 0x0,
	COL_BLUE  = 0x1,
	COL_RED   = 0x2,
	COL_GOLD  = 0x3,
} text_color;

typedef enum item_color {
	ICOL_WHITE = PAL16_YELLOW + 5,
	ICOL_BLUE  = PAL16_BLUE + 5,
	ICOL_RED   = PAL16_RED + 5,
} item_color;

typedef enum _difficulty {
	DIFF_NORMAL      = 0x0,
	DIFF_NIGHTMARE   = 0x1,
	DIFF_HELL        = 0x2,
	NUM_DIFFICULTIES = 0x3,
} _difficulty;

typedef enum MON_MODE {
	MM_STAND     = 0,
	MM_WALK      = 1,
	MM_WALK2     = 2,
	MM_WALK3     = 3,
	MM_ATTACK    = 4,
	MM_GOTHIT    = 5,
	MM_DEATH     = 6,
	MM_SATTACK   = 7,
	MM_FADEIN    = 8,
	MM_FADEOUT   = 9,
	MM_RATTACK   = 10,
	MM_SPSTAND   = 11,
	MM_RSPATTACK = 12,
	MM_DELAY     = 13,
	MM_CHARGE    = 14,
	MM_STONE     = 15,
	MM_HEAL      = 16,
	MM_TALK      = 17,
} MON_MODE;

typedef enum MON_ANIM {
	MA_STAND   = 0,
	MA_WALK    = 1,
	MA_ATTACK  = 2,
	MA_GOTHIT  = 3,
	MA_DEATH   = 4,
	MA_SPECIAL = 5,
} MON_ANIM;

typedef enum PLR_MODE {
	PM_STAND   = 0,
	PM_WALK    = 1,
	PM_WALK2   = 2,
	PM_WALK3   = 3,
	PM_ATTACK  = 4,
	PM_RATTACK = 5,
	PM_BLOCK   = 6,
	PM_GOTHIT  = 7,
	PM_DEATH   = 8,
	PM_SPELL   = 9,
	PM_NEWLVL  = 10,
	PM_QUIT    = 11,
} PLR_MODE;

typedef enum spell_type {
	RSPLTYPE_SKILL   = 0x0,
	RSPLTYPE_SPELL   = 0x1,
	RSPLTYPE_SCROLL  = 0x2,
	RSPLTYPE_CHARGES = 0x3,
	RSPLTYPE_INVALID = 0x4,
} spell_type;

typedef enum cursor_id {
	CURSOR_NONE        = 0x0,
	CURSOR_HAND        = 0x1,
	CURSOR_IDENTIFY    = 0x2,
	CURSOR_REPAIR      = 0x3,
	CURSOR_RECHARGE    = 0x4,
	CURSOR_DISARM      = 0x5,
	CURSOR_OIL         = 0x6,
	CURSOR_TELEKINESIS = 0x7,
	CURSOR_RESURRECT   = 0x8,
	CURSOR_TELEPORT    = 0x9,
	CURSOR_HEALOTHER   = 0xA,
	CURSOR_HOURGLASS   = 0xB,
	CURSOR_FIRSTITEM   = 0xC,
} cursor_id;

typedef enum direction {
	DIR_S    = 0x0,
	DIR_SW   = 0x1,
	DIR_W    = 0x2,
	DIR_NW   = 0x3,
	DIR_N    = 0x4,
	DIR_NE   = 0x5,
	DIR_E    = 0x6,
	DIR_SE   = 0x7,
	DIR_OMNI = 0x8,
} direction;

typedef enum _scroll_direction {
	SDIR_NONE = 0x0,
	SDIR_N    = 0x1,
	SDIR_NE   = 0x2,
	SDIR_E    = 0x3,
	SDIR_SE   = 0x4,
	SDIR_S    = 0x5,
	SDIR_SW   = 0x6,
	SDIR_W    = 0x7,
	SDIR_NW   = 0x8,
} _scroll_direction;

typedef enum interface_mode {
	WM_DIABNEXTLVL  = 0x402, // WM_USER+2
	WM_DIABPREVLVL  = 0x403,
	WM_DIABRTNLVL   = 0x404,
	WM_DIABSETLVL   = 0x405,
	WM_DIABWARPLVL  = 0x406,
	WM_DIABTOWNWARP = 0x407,
	WM_DIABTWARPUP  = 0x408,
	WM_DIABRETOWN   = 0x409,
	WM_DIABNEWGAME  = 0x40A,
	WM_DIABLOADGAME = 0x40B
	// WM_LEIGHSKIP = 0x40C, // psx only
	// WM_DIAVNEWLVL = 0x40D, // psx only
} interface_mode;

typedef enum game_info {
	GAMEINFO_NAME         = 1,
	GAMEINFO_PASSWORD     = 2,
	GAMEINFO_STATS        = 3,
	GAMEINFO_MODEFLAG     = 4,
	GAMEINFO_GAMETEMPLATE = 5,
	GAMEINFO_PLAYERS      = 6,
} game_info;

typedef enum spell_id {
	SPL_NULL        = 0x0,
	SPL_FIREBOLT    = 0x1,
	SPL_HEAL        = 0x2,
	SPL_LIGHTNING   = 0x3,
	SPL_FLASH       = 0x4,
	SPL_IDENTIFY    = 0x5,
	SPL_FIREWALL    = 0x6,
	SPL_TOWN        = 0x7,
	SPL_STONE       = 0x8,
	SPL_INFRA       = 0x9,
	SPL_RNDTELEPORT = 0xA,
	SPL_MANASHIELD  = 0xB,
	SPL_FIREBALL    = 0xC,
	SPL_GUARDIAN    = 0xD,
	SPL_CHAIN       = 0xE,
	SPL_WAVE        = 0xF,
	SPL_DOOMSERP    = 0x10,
	SPL_BLODRIT     = 0x11,
	SPL_NOVA        = 0x12,
	SPL_INVISIBIL   = 0x13,
	SPL_FLAME       = 0x14,
	SPL_GOLEM       = 0x15,
	SPL_BLODBOIL    = 0x16,
	SPL_TELEPORT    = 0x17,
	SPL_APOCA       = 0x18,
	SPL_ETHEREALIZE = 0x19,
	SPL_REPAIR      = 0x1A,
	SPL_RECHARGE    = 0x1B,
	SPL_DISARM      = 0x1C,
	SPL_ELEMENT     = 0x1D,
	SPL_CBOLT       = 0x1E,
	SPL_HBOLT       = 0x1F,
	SPL_RESURRECT   = 0x20,
	SPL_TELEKINESIS = 0x21,
	SPL_HEALOTHER   = 0x22,
	SPL_FLARE       = 0x23,
	SPL_BONESPIRIT  = 0x24,
	SPL_INVALID     = 0xFFFFFFFF,
} spell_id;

typedef enum _cmd_id {
	CMD_STAND             = 0,
	CMD_WALKXY            = 1,
	CMD_ACK_PLRINFO       = 2,
	CMD_ADDSTR            = 3,
	CMD_ADDMAG            = 4,
	CMD_ADDDEX            = 5,
	CMD_ADDVIT            = 6,
	CMD_SBSPELL           = 7,
	CMD_GETITEM           = 8,
	CMD_AGETITEM          = 9,
	CMD_PUTITEM           = 10,
	CMD_RESPAWNITEM       = 11,
	CMD_ATTACKXY          = 12,
	CMD_RATTACKXY         = 13,
	CMD_SPELLXY           = 14,
	CMD_TSPELLXY          = 15,
	CMD_OPOBJXY           = 16,
	CMD_DISARMXY          = 17,
	CMD_ATTACKID          = 18,
	CMD_ATTACKPID         = 19,
	CMD_RATTACKID         = 20,
	CMD_RATTACKPID        = 21,
	CMD_SPELLID           = 22,
	CMD_SPELLPID          = 23,
	CMD_TSPELLID          = 24,
	CMD_TSPELLPID         = 25,
	CMD_RESURRECT         = 26,
	CMD_OPOBJT            = 27,
	CMD_KNOCKBACK         = 28,
	CMD_TALKXY            = 29,
	CMD_NEWLVL            = 30,
	CMD_WARP              = 31,
	CMD_CHEAT_EXPERIENCE  = 32,
	CMD_CHEAT_SPELL_LEVEL = 33,
	CMD_DEBUG             = 34,
	CMD_SYNCDATA          = 35,
	CMD_MONSTDEATH        = 36,
	CMD_MONSTDAMAGE       = 37,
	CMD_PLRDEAD           = 38,
	CMD_REQUESTGITEM      = 39,
	CMD_REQUESTAGITEM     = 40,
	CMD_GOTOGETITEM       = 41,
	CMD_GOTOAGETITEM      = 42,
	CMD_OPENDOOR          = 43,
	CMD_CLOSEDOOR         = 44,
	CMD_OPERATEOBJ        = 45,
	CMD_PLROPOBJ          = 46,
	CMD_BREAKOBJ          = 47,
	CMD_CHANGEPLRITEMS    = 48,
	CMD_DELPLRITEMS       = 49,
	CMD_PLRDAMAGE         = 50,
	CMD_PLRLEVEL          = 51,
	CMD_DROPITEM          = 52,
	CMD_PLAYER_JOINLEVEL  = 53,
	CMD_SEND_PLRINFO      = 54,
	CMD_SATTACKXY         = 55,
	CMD_ACTIVATEPORTAL    = 56,
	CMD_DEACTIVATEPORTAL  = 57,
	CMD_DLEVEL_0          = 58,
	CMD_DLEVEL_1          = 59,
	CMD_DLEVEL_2          = 60,
	CMD_DLEVEL_3          = 61,
	CMD_DLEVEL_4          = 62,
	CMD_DLEVEL_5          = 63,
	CMD_DLEVEL_6          = 64,
	CMD_DLEVEL_7          = 65,
	CMD_DLEVEL_8          = 66,
	CMD_DLEVEL_9          = 67,
	CMD_DLEVEL_10         = 68,
	CMD_DLEVEL_11         = 69,
	CMD_DLEVEL_12         = 70,
	CMD_DLEVEL_13         = 71,
	CMD_DLEVEL_14         = 72,
	CMD_DLEVEL_15         = 73,
	CMD_DLEVEL_16         = 74,
	CMD_DLEVEL_JUNK       = 75,
	CMD_DLEVEL_END        = 76,
	CMD_HEALOTHER         = 77,
	CMD_STRING            = 78,
	CMD_SETSTR            = 79,
	CMD_SETMAG            = 80,
	CMD_SETDEX            = 81,
	CMD_SETVIT            = 82,
	CMD_RETOWN            = 83,
	CMD_SPELLXYD          = 84,
	CMD_ITEMEXTRA         = 85,
	CMD_SYNCPUTITEM       = 86,
	CMD_KILLGOLEM         = 87,
	CMD_SYNCQUEST         = 88,
	CMD_ENDSHIELD         = 89,
	CMD_AWAKEGOLEM        = 90,
	CMD_NOVA              = 91,
	CMD_SETSHIELD         = 92,
	CMD_REMSHIELD         = 93,
	FAKE_CMD_SETID        = 94,
	FAKE_CMD_DROPID       = 95,
	NUM_CMDS              = 96,
} _cmd_id;

typedef enum _talker_id {
	TOWN_SMITH   = 0x0,
	TOWN_HEALER  = 0x1,
	TOWN_DEADGUY = 0x2,
	TOWN_TAVERN  = 0x3,
	TOWN_STORY   = 0x4,
	TOWN_DRUNK   = 0x5,
	TOWN_WITCH   = 0x6,
	TOWN_BMAID   = 0x7,
	TOWN_PEGBOY  = 0x8,
	TOWN_COW     = 0x9,
	TOWN_PRIEST  = 0xA,
} _talker_id;

typedef enum _music_id {
	TMUSIC_TOWN  = 0,
	TMUSIC_L1    = 1,
	TMUSIC_L2    = 2,
	TMUSIC_L3    = 3,
	TMUSIC_L4    = 4,
	TMUSIC_INTRO = 5,
	NUM_MUSIC    = 6,
} _music_id;

typedef enum _mainmenu_selections {
	MAINMENU_SINGLE_PLAYER = 1,
	MAINMENU_MULTIPLAYER   = 2,
	MAINMENU_REPLAY_INTRO  = 3,
	MAINMENU_SHOW_CREDITS  = 4,
	MAINMENU_EXIT_DIABLO   = 5,
	MAINMENU_ATTRACT_MODE  = 6,
} _mainmenu_selections;

typedef enum dlgresults
{
	NEW_GAME = 0,
	LOAD_GAME = 2,
	EXIT_MENU = 4,
} dlgresults;

typedef enum panel_button_id {
	PANBTN_CHARINFO  = 0,
	PANBTN_QLOG      = 1,
	PANBTN_AUTOMAP   = 2,
	PANBTN_MAINMENU  = 3,
	PANBTN_INVENTORY = 4,
	PANBTN_SPELLBOOK = 5,
	PANBTN_SENDMSG   = 6,
	PANBTN_FRIENDLY  = 7,
} panel_button_id;

typedef enum attribute_id {
	ATTRIB_STR = 0,
	ATTRIB_MAG = 1,
	ATTRIB_DEX = 2,
	ATTRIB_VIT = 3,
} attribute_id;

typedef enum _object_id {
	OBJ_L1LIGHT      = 0x0,
	OBJ_L1LDOOR      = 0x1,
	OBJ_L1RDOOR      = 0x2,
	OBJ_SKFIRE       = 0x3,
	OBJ_LEVER        = 0x4,
	OBJ_CHEST1       = 0x5,
	OBJ_CHEST2       = 0x6,
	OBJ_CHEST3       = 0x7,
	OBJ_CANDLE1      = 0x8,
	OBJ_CANDLE2      = 0x9,
	OBJ_CANDLEO      = 0xA,
	OBJ_BANNERL      = 0xB,
	OBJ_BANNERM      = 0xC,
	OBJ_BANNERR      = 0xD,
	OBJ_SKPILE       = 0xE,
	OBJ_SKSTICK1     = 0xF,
	OBJ_SKSTICK2     = 0x10,
	OBJ_SKSTICK3     = 0x11,
	OBJ_SKSTICK4     = 0x12,
	OBJ_SKSTICK5     = 0x13,
	OBJ_CRUX1        = 0x14,
	OBJ_CRUX2        = 0x15,
	OBJ_CRUX3        = 0x16,
	OBJ_STAND        = 0x17,
	OBJ_ANGEL        = 0x18,
	OBJ_BOOK2L       = 0x19,
	OBJ_BCROSS       = 0x1A,
	OBJ_NUDEW2R      = 0x1B,
	OBJ_SWITCHSKL    = 0x1C,
	OBJ_TNUDEM1      = 0x1D,
	OBJ_TNUDEM2      = 0x1E,
	OBJ_TNUDEM3      = 0x1F,
	OBJ_TNUDEM4      = 0x20,
	OBJ_TNUDEW1      = 0x21,
	OBJ_TNUDEW2      = 0x22,
	OBJ_TNUDEW3      = 0x23,
	OBJ_TORTURE1     = 0x24,
	OBJ_TORTURE2     = 0x25,
	OBJ_TORTURE3     = 0x26,
	OBJ_TORTURE4     = 0x27,
	OBJ_TORTURE5     = 0x28,
	OBJ_BOOK2R       = 0x29,
	OBJ_L2LDOOR      = 0x2A,
	OBJ_L2RDOOR      = 0x2B,
	OBJ_TORCHL       = 0x2C,
	OBJ_TORCHR       = 0x2D,
	OBJ_TORCHL2      = 0x2E,
	OBJ_TORCHR2      = 0x2F,
	OBJ_SARC         = 0x30,
	OBJ_FLAMEHOLE    = 0x31,
	OBJ_FLAMELVR     = 0x32,
	OBJ_WATER        = 0x33,
	OBJ_BOOKLVR      = 0x34,
	OBJ_TRAPL        = 0x35,
	OBJ_TRAPR        = 0x36,
	OBJ_BOOKSHELF    = 0x37,
	OBJ_WEAPRACK     = 0x38,
	OBJ_BARREL       = 0x39,
	OBJ_BARRELEX     = 0x3A,
	OBJ_SHRINEL      = 0x3B,
	OBJ_SHRINER      = 0x3C,
	OBJ_SKELBOOK     = 0x3D,
	OBJ_BOOKCASEL    = 0x3E,
	OBJ_BOOKCASER    = 0x3F,
	OBJ_BOOKSTAND    = 0x40,
	OBJ_BOOKCANDLE   = 0x41,
	OBJ_BLOODFTN     = 0x42,
	OBJ_DECAP        = 0x43,
	OBJ_TCHEST1      = 0x44,
	OBJ_TCHEST2      = 0x45,
	OBJ_TCHEST3      = 0x46,
	OBJ_BLINDBOOK    = 0x47,
	OBJ_BLOODBOOK    = 0x48,
	OBJ_PEDISTAL     = 0x49,
	OBJ_L3LDOOR      = 0x4A,
	OBJ_L3RDOOR      = 0x4B,
	OBJ_PURIFYINGFTN = 0x4C,
	OBJ_ARMORSTAND   = 0x4D,
	OBJ_ARMORSTANDN  = 0x4E,
	OBJ_GOATSHRINE   = 0x4F,
	OBJ_CAULDRON     = 0x50,
	OBJ_MURKYFTN     = 0x51,
	OBJ_TEARFTN      = 0x52,
	OBJ_ALTBOY       = 0x53,
	OBJ_MCIRCLE1     = 0x54,
	OBJ_MCIRCLE2     = 0x55,
	OBJ_STORYBOOK    = 0x56,
	OBJ_STORYCANDLE  = 0x57,
	OBJ_STEELTOME    = 0x58,
	OBJ_WARARMOR     = 0x59,
	OBJ_WARWEAP      = 0x5A,
	OBJ_TBCROSS      = 0x5B,
	OBJ_WEAPONRACK   = 0x5C,
	OBJ_WEAPONRACKN  = 0x5D,
	OBJ_MUSHPATCH    = 0x5E,
	OBJ_LAZSTAND     = 0x5F,
	OBJ_SLAINHERO    = 0x60,
	OBJ_SIGNCHEST    = 0x61,
	OBJ_NULL_98      = 0x62,
} _object_id;

typedef enum item_misc_id {
	IMISC_NONE      = 0x0,
	IMISC_USEFIRST  = 0x1,
	IMISC_FULLHEAL  = 0x2,
	IMISC_HEAL      = 0x3,
	IMISC_OLDHEAL   = 0x4,
	IMISC_DEADHEAL  = 0x5,
	IMISC_MANA      = 0x6,
	IMISC_FULLMANA  = 0x7,
	IMISC_POTEXP    = 0x8, /* add experience */
	IMISC_POTFORG   = 0x9, /* remove experience */
	IMISC_ELIXSTR   = 0xA,
	IMISC_ELIXMAG   = 0xB,
	IMISC_ELIXDEX   = 0xC,
	IMISC_ELIXVIT   = 0xD,
	IMISC_ELIXWEAK  = 0xE, /* double check with alpha */
	IMISC_ELIXDIS   = 0xF,
	IMISC_ELIXCLUM  = 0x10,
	IMISC_ELIXSICK  = 0x11,
	IMISC_REJUV     = 0x12,
	IMISC_FULLREJUV = 0x13,
	IMISC_USELAST   = 0x14,
	IMISC_SCROLL    = 0x15,
	IMISC_SCROLLT   = 0x16,
	IMISC_STAFF     = 0x17,
	IMISC_BOOK      = 0x18,
	IMISC_RING      = 0x19,
	IMISC_AMULET    = 0x1A,
	IMISC_UNIQUE    = 0x1B,
	IMISC_HEAL_1C   = 0x1C,
	IMISC_OILFIRST  = 0x1D,
	IMISC_OILOF     = 0x1E, /* oils are beta or hellfire only */
	IMISC_OILACC    = 0x1F,
	IMISC_OILMAST   = 0x20,
	IMISC_OILSHARP  = 0x21,
	IMISC_OILDEATH  = 0x22,
	IMISC_OILSKILL  = 0x23,
	IMISC_OILBSMTH  = 0x24,
	IMISC_OILFORT   = 0x25,
	IMISC_OILPERM   = 0x26,
	IMISC_OILHARD   = 0x27,
	IMISC_OILIMP    = 0x28,
	IMISC_OILLAST   = 0x29,
	IMISC_MAPOFDOOM = 0x2A,
	IMISC_EAR       = 0x2B,
	IMISC_SPECELIX  = 0x2C,
	IMISC_INVALID   = 0xFFFFFFFF,
} item_misc_id;

typedef enum item_type {
	ITYPE_MISC   = 0x0,
	ITYPE_SWORD  = 0x1,
	ITYPE_AXE    = 0x2,
	ITYPE_BOW    = 0x3,
	ITYPE_MACE   = 0x4,
	ITYPE_SHIELD = 0x5,
	ITYPE_LARMOR = 0x6,
	ITYPE_HELM   = 0x7,
	ITYPE_MARMOR = 0x8,
	ITYPE_HARMOR = 0x9,
	ITYPE_STAFF  = 0xA,
	ITYPE_GOLD   = 0xB,
	ITYPE_RING   = 0xC,
	ITYPE_AMULET = 0xD,
	ITYPE_0E     = 0xE,
	ITYPE_NONE   = 0xFFFFFFFF,
} item_type;

typedef enum _item_indexes {
	IDI_GOLD       = 0x0,
	IDI_WARRIOR    = 0x1,
	IDI_WARRSHLD   = 0x2,
	IDI_WARRCLUB   = 0x3,
	IDI_ROGUE      = 0x4,
	IDI_SORCEROR   = 0x5,
	IDI_CLEAVER    = 0x6,
	IDI_FIRSTQUEST = 0x6,
	IDI_SKCROWN    = 0x7,
	IDI_INFRARING  = 0x8,
	IDI_ROCK       = 0x9,
	IDI_OPTAMULET  = 0xA,
	IDI_TRING      = 0xB,
	IDI_BANNER     = 0xC,
	IDI_HARCREST   = 0xD,
	IDI_STEELVEIL  = 0xE,
	IDI_GLDNELIX   = 0xF,
	IDI_ANVIL      = 0x10,
	IDI_MUSHROOM   = 0x11,
	IDI_BRAIN      = 0x12,
	IDI_FUNGALTM   = 0x13,
	IDI_SPECELIX   = 0x14,
	IDI_BLDSTONE   = 0x15,
	IDI_LASTQUEST  = 0x16,
	IDI_MAPOFDOOM  = 0x16,
	IDI_EAR        = 0x17,
	IDI_HEAL       = 0x18,
	IDI_MANA       = 0x19,
	IDI_IDENTIFY   = 0x1A,
	IDI_PORTAL     = 0x1B,
	IDI_ARMOFVAL   = 0x1C,
	IDI_FULLHEAL   = 0x1D,
	IDI_FULLMANA   = 0x1E,
	IDI_GRISWOLD   = 0x1F,
	IDI_LGTFORGE   = 0x20,
	IDI_LAZSTAFF   = 0x21,
	IDI_RESURRECT  = 0x22,
} _item_indexes;

typedef enum _setlevels {
	//SL_BUTCHCHAMB = 0x0,
	SL_SKELKING     = 0x1,
	SL_BONECHAMB    = 0x2,
	SL_MAZE         = 0x3,
	SL_POISONWATER  = 0x4,
	SL_VILEBETRAYER = 0x5,
} _setlevels;

typedef enum quest_id {
	QTYPE_INFRA   = 0x0,
	QTYPE_BLKM    = 0x1,
	QTYPE_GARB    = 0x2,
	QTYPE_ZHAR    = 0x3,
	QTYPE_VEIL    = 0x4,
	QTYPE_MOD     = 0x5,
	QTYPE_BUTCH   = 0x6,
	QTYPE_BOL     = 0x7,
	QTYPE_BLIND   = 0x8,
	QTYPE_BLOOD   = 0x9,
	QTYPE_ANVIL   = 0xA,
	QTYPE_WARLRD  = 0xB,
	QTYPE_KING    = 0xC,
	QTYPE_PW      = 0xD,
	QTYPE_BONE    = 0xE,
	QTYPE_VB      = 0xF,
	QTYPE_INVALID = 0xFFFFFFFF,
} quest_id;

typedef enum quest_mush_state {
	QS_INIT         = 0,
	QS_TOMESPAWNED  = 1,
	QS_TOMEGIVEN    = 2,
	QS_MUSHSPAWNED  = 3,
	QS_MUSHPICKED   = 4,
	QS_MUSHGIVEN    = 5,
	QS_BRAINSPAWNED = 6,
	QS_BRAINGIVEN   = 7,
} quest_mush_state;

typedef enum talk_id {
	STORE_NONE      = 0x0,
	STORE_SMITH     = 0x1,
	STORE_SBUY      = 0x2,
	STORE_SSELL     = 0x3,
	STORE_SREPAIR   = 0x4,
	STORE_WITCH     = 0x5,
	STORE_WBUY      = 0x6,
	STORE_WSELL     = 0x7,
	STORE_WRECHARGE = 0x8,
	STORE_NOMONEY   = 0x9,
	STORE_NOROOM    = 0xA,
	STORE_CONFIRM   = 0xB,
	STORE_BOY       = 0xC,
	STORE_BBOY      = 0xD,
	STORE_HEALER    = 0xE,
	STORE_STORY     = 0xF,
	STORE_HBUY      = 0x10,
	STORE_SIDENTIFY = 0x11,
	STORE_SPBUY     = 0x12,
	STORE_GOSSIP    = 0x13,
	STORE_IDSHOW    = 0x14,
	STORE_TAVERN    = 0x15,
	STORE_DRUNK     = 0x16,
	STORE_BARMAID   = 0x17,
} talk_id;

typedef enum _unique_items {
	UITEM_CLEAVER      = 0x0,
	UITEM_SKCROWN      = 0x1,
	UITEM_INFRARING    = 0x2,
	UITEM_OPTAMULET    = 0x3,
	UITEM_TRING        = 0x4,
	UITEM_HARCREST     = 0x5,
	UITEM_STEELVEIL    = 0x6,
	UITEM_ARMOFVAL     = 0x7,
	UITEM_GRISWOLD     = 0x8,
	UITEM_LGTFORGE     = 0x9,
	UITEM_RIFTBOW      = 0xA,
	UITEM_NEEDLER      = 0xB,
	UITEM_CELESTBOW    = 0xC,
	UITEM_DEADLYHUNT   = 0xD,
	UITEM_BOWOFDEAD    = 0xE,
	UITEM_BLKOAKBOW    = 0xF,
	UITEM_FLAMEDART    = 0x10,
	UITEM_FLESHSTING   = 0x11,
	UITEM_WINDFORCE    = 0x12,
	UITEM_EAGLEHORN    = 0x13,
	UITEM_GONNAGALDIRK = 0x14,
	UITEM_DEFENDER     = 0x15,
	UITEM_GRYPHONCLAW  = 0x16,
	UITEM_BLACKRAZOR   = 0x17,
	UITEM_GIBBOUSMOON  = 0x18,
	UITEM_ICESHANK     = 0x19,
	UITEM_EXECUTIONER  = 0x1A,
	UITEM_BONESAW      = 0x1B,
	UITEM_SHADHAWK     = 0x1C,
	UITEM_WIZSPIKE     = 0x1D,
	UITEM_LGTSABRE     = 0x1E,
	UITEM_FALCONTALON  = 0x1F,
	UITEM_INFERNO      = 0x20,
	UITEM_DOOMBRINGER  = 0x21,
	UITEM_GRIZZLY      = 0x22,
	UITEM_GRANDFATHER  = 0x23,
	UITEM_MANGLER      = 0x24,
	UITEM_SHARPBEAK    = 0x25,
	UITEM_BLOODLSLAYER = 0x26,
	UITEM_CELESTAXE    = 0x27,
	UITEM_WICKEDAXE    = 0x28,
	UITEM_STONECLEAV   = 0x29,
	UITEM_AGUHATCHET   = 0x2A,
	UITEM_HELLSLAYER   = 0x2B,
	UITEM_MESSERREAVER = 0x2C,
	UITEM_CRACKRUST    = 0x2D,
	UITEM_JHOLMHAMM    = 0x2E,
	UITEM_CIVERBS      = 0x2F,
	UITEM_CELESTSTAR   = 0x30,
	UITEM_BARANSTAR    = 0x31,
	UITEM_GNARLROOT    = 0x32,
	UITEM_CRANBASH     = 0x33,
	UITEM_SCHAEFHAMM   = 0x34,
	UITEM_DREAMFLANGE  = 0x35,
	UITEM_STAFFOFSHAD  = 0x36,
	UITEM_IMMOLATOR    = 0x37,
	UITEM_STORMSPIRE   = 0x38,
	UITEM_GLEAMSONG    = 0x39,
	UITEM_THUNDERCALL  = 0x3A,
	UITEM_PROTECTOR    = 0x3B,
	UITEM_NAJPUZZLE    = 0x3C,
	UITEM_MINDCRY      = 0x3D,
	UITEM_RODOFONAN    = 0x3E,
	UITEM_SPIRITSHELM  = 0x3F,
	UITEM_THINKINGCAP  = 0x40,
	UITEM_OVERLORDHELM = 0x41,
	UITEM_FOOLSCREST   = 0x42,
	UITEM_GOTTERDAM    = 0x43,
	UITEM_ROYCIRCLET   = 0x44,
	UITEM_TORNFLESH    = 0x45,
	UITEM_GLADBANE     = 0x46,
	UITEM_RAINCLOAK    = 0x47,
	UITEM_LEATHAUT     = 0x48,
	UITEM_WISDWRAP     = 0x49,
	UITEM_SPARKMAIL    = 0x4A,
	UITEM_SCAVCARAP    = 0x4B,
	UITEM_NIGHTSCAPE   = 0x4C,
	UITEM_NAJPLATE     = 0x4D,
	UITEM_DEMONSPIKE   = 0x4E,
	UITEM_DEFLECTOR    = 0x4F,
	UITEM_SKULLSHLD    = 0x50,
	UITEM_DRAGONBRCH   = 0x51,
	UITEM_BLKOAKSHLD   = 0x52,
	UITEM_HOLYDEF      = 0x53,
	UITEM_STORMSHLD    = 0x54,
	UITEM_BRAMBLE      = 0x55,
	UITEM_REGHA        = 0x56,
	UITEM_BLEEDER      = 0x57,
	UITEM_CONSTRICT    = 0x58,
	UITEM_ENGAGE       = 0x59,
	UITEM_INVALID      = 0x5A,
} _unique_items;

typedef enum plr_class {
	PC_WARRIOR  = 0x0,
	PC_ROGUE    = 0x1,
	PC_SORCERER = 0x2,
	NUM_CLASSES
} plr_class;

typedef enum _ui_classes {
	UI_WARRIOR     = 0x0,
	UI_ROGUE       = 0x1,
	UI_SORCERER    = 0x2,
	UI_NUM_CLASSES = 0x3,
} _ui_classes;

typedef enum _walk_path {
	WALK_NE   = 0x1,
	WALK_NW   = 0x2,
	WALK_SE   = 0x3,
	WALK_SW   = 0x4,
	WALK_N    = 0x5,
	WALK_E    = 0x6,
	WALK_S    = 0x7,
	WALK_W    = 0x8,
	WALK_NONE = -1,
} _walk_path;

typedef enum player_weapon_type {
	WT_MELEE  = 0,
	WT_RANGED = 1,
} player_weapon_type;

typedef enum item_class {
	ICLASS_NONE   = 0,
	ICLASS_WEAPON = 1,
	ICLASS_ARMOR  = 2,
	ICLASS_MISC   = 3,
	ICLASS_GOLD   = 4,
	ICLASS_QUEST  = 5,
} item_class;

typedef enum item_drop_rate {
	IDROP_NEVER   = 0,
	IDROP_REGULAR = 1,
	IDROP_DOUBLE  = 2,
} item_drop_rate;

typedef enum item_special_effect {
	ISPL_NONE           = 0x00000000,
	ISPL_INFRAVISION    = 0x00000001,
	ISPL_RNDSTEALLIFE   = 0x00000002,
	ISPL_RNDARROWVEL    = 0x00000004,
	ISPL_FIRE_ARROWS    = 0x00000008,
	ISPL_FIREDAM        = 0x00000010,
	ISPL_LIGHTDAM       = 0x00000020,
	ISPL_DRAINLIFE      = 0x00000040,
	ISPL_UNKNOWN_1      = 0x00000080,
	ISPL_NOHEALPLR      = 0x00000100,
	ISPL_UNKNOWN_2      = 0x00000200,
	ISPL_UNKNOWN_3      = 0x00000400,
	ISPL_KNOCKBACK      = 0x00000800,
	ISPL_NOHEALMON      = 0x00001000,
	ISPL_STEALMANA_3    = 0x00002000,
	ISPL_STEALMANA_5    = 0x00004000,
	ISPL_STEALLIFE_3    = 0x00008000,
	ISPL_STEALLIFE_5    = 0x00010000,
	ISPL_QUICKATTACK    = 0x00020000,
	ISPL_FASTATTACK     = 0x00040000,
	ISPL_FASTERATTACK   = 0x00080000,
	ISPL_FASTESTATTACK  = 0x00100000,
	ISPL_FASTRECOVER    = 0x00200000,
	ISPL_FASTERRECOVER  = 0x00400000,
	ISPL_FASTESTRECOVER = 0x00800000,
	ISPL_FASTBLOCK      = 0x01000000,
	ISPL_LIGHT_ARROWS   = 0x02000000,
	ISPL_THORNS         = 0x04000000,
	ISPL_NOMANA         = 0x08000000,
	ISPL_ABSHALFTRAP    = 0x10000000,
	ISPL_UNKNOWN_4      = 0x20000000,
	ISPL_3XDAMVDEM      = 0x40000000,
	ISPL_ALLRESZERO     = 0x80000000,
} item_special_effect;

// Logical equipment locations
typedef enum inv_body_loc {
	INVLOC_HEAD       = 0,
	INVLOC_RING_LEFT  = 1,
	INVLOC_RING_RIGHT = 2,
	INVLOC_AMULET     = 3,
	INVLOC_HAND_LEFT  = 4,
	INVLOC_HAND_RIGHT = 5,
	INVLOC_CHEST      = 6,
	NUM_INVLOC,
} inv_body_loc;

typedef enum inv_item {
	INVITEM_HEAD       = 0,
	INVITEM_RING_LEFT  = 1,
	INVITEM_RING_RIGHT = 2,
	INVITEM_AMULET     = 3,
	INVITEM_HAND_LEFT  = 4,
	INVITEM_HAND_RIGHT = 5,
	INVITEM_CHEST      = 6,
	INVITEM_INV_FIRST  = 7,
	INVITEM_INV_LAST   = 46,
	INVITEM_BELT_FIRST = 47,
	INVITEM_BELT_LAST  = 54,
	NUM_INVELEM
} inv_item;

// identifiers for each of the inventory squares
// see https://github.com/sanctuary/graphics/blob/master/inventory.png
typedef enum inv_xy_slot {
	SLOTXY_HEAD_FIRST       = 0,
	SLOTXY_HEAD_LAST        = 3,
	SLOTXY_RING_LEFT        = 4,
	SLOTXY_RING_RIGHT       = 5,
	SLOTXY_AMULET           = 6,
	SLOTXY_HAND_LEFT_FIRST  = 7,
	SLOTXY_HAND_LEFT_LAST   = 12,
	SLOTXY_HAND_RIGHT_FIRST = 13,
	SLOTXY_HAND_RIGHT_LAST  = 18,
	SLOTXY_CHEST_FIRST      = 19,
	SLOTXY_CHEST_LAST       = 24,

	// regular inventory
	SLOTXY_INV_FIRST = 25,
	SLOTXY_INV_LAST  = 64,

	// belt items
	SLOTXY_BELT_FIRST = 65,
	SLOTXY_BELT_LAST  = 72,
	NUM_XY_SLOTS      = 73
} inv_xy_slot;

typedef enum player_graphic {
	PFILE_STAND     = 1 << 0,
	PFILE_WALK      = 1 << 1,
	PFILE_ATTACK    = 1 << 2,
	PFILE_HIT       = 1 << 3,
	PFILE_LIGHTNING = 1 << 4,
	PFILE_FIRE      = 1 << 5,
	PFILE_MAGIC     = 1 << 6,
	PFILE_DEATH     = 1 << 7,
	PFILE_BLOCK     = 1 << 8,
	// everything except PFILE_DEATH
	// 0b1_0111_1111
	PFILE_NONDEATH = 0x17F
} player_graphic;

typedef enum anim_weapon_id {
	ANIM_ID_UNARMED        = 0x00,
	ANIM_ID_UNARMED_SHIELD = 0x01,
	ANIM_ID_SWORD          = 0x02,
	ANIM_ID_SWORD_SHIELD   = 0x03,
	ANIM_ID_BOW            = 0x04,
	ANIM_ID_AXE            = 0x05,
	ANIM_ID_MACE           = 0x06,
	ANIM_ID_MACE_SHIELD    = 0x07,
	ANIM_ID_STAFF          = 0x08
} anim_weapon_id;

typedef enum anim_armor_id {
	ANIM_ID_LIGHT_ARMOR  = 0x00,
	ANIM_ID_MEDIUM_ARMOR = 0x10,
	ANIM_ID_HEAVY_ARMOR  = 0x20
} anim_armor_id;

typedef enum shrine_type {
	SHRINE_MYSTERIOUS   = 0,
	SHRINE_HIDDEN       = 1,
	SHRINE_GLOOMY       = 2,
	SHRINE_WEIRD        = 3,
	SHRINE_MAGICAL      = 4,
	SHRINE_STONE        = 5,
	SHRINE_RELIGIOUS    = 6,
	SHRINE_ENCHANTED    = 7,
	SHRINE_THAUMATURGIC = 8,
	SHRINE_FASCINATING  = 9,
	SHRINE_CRYPTIC      = 10,
	SHRINE_MAGICAL2     = 11,
	SHRINE_ELDRITCH     = 12,
	SHRINE_EERIE        = 13,
	SHRINE_DIVINE       = 14,
	SHRINE_HOLY         = 15,
	SHRINE_SACRED       = 16,
	SHRINE_SPIRITUAL    = 17,
	SHRINE_SPOOKY       = 18,
	SHRINE_ABANDONED    = 19,
	SHRINE_CREEPY       = 20,
	SHRINE_QUIET        = 21,
	SHRINE_SECLUDED     = 22,
	SHRINE_ORNATE       = 23,
	SHRINE_GLIMMERING   = 24,
	SHRINE_TAINTED      = 25,
	NUM_SHRINETYPE
} shrine_type;

typedef enum action_id {
	ACTION_NONE        = -1,
	ACTION_ATTACK      = 9,
	ACTION_RATTACK     = 10,
	ACTION_SPELL       = 12,
	ACTION_OPERATE     = 13,
	ACTION_DISARM      = 14,
	ACTION_PICKUPITEM  = 15, // put item in hand (inventory screen open)
	ACTION_PICKUPAITEM = 16, // put item in inventory
	ACTION_TALK        = 17,
	ACTION_OPERATETK   = 18, // operate via telekinesis
	ACTION_ATTACKMON   = 20,
	ACTION_ATTACKPLR   = 21,
	ACTION_RATTACKMON  = 22,
	ACTION_RATTACKPLR  = 23,
	ACTION_SPELLMON    = 24,
	ACTION_SPELLPLR    = 25,
	ACTION_SPELLWALL   = 26,
} action_id;
